دیزاین پترن چیست؟

دیزاین پترن چیست؟

نوشته شده توسط: فاطمه نجفی مقدم
تاریخ انتشار: ۱۳ بهمن ۱۴۰۰
آخرین بروزرسانی: ۰۹ مهر ۱۴۰۲
زمان مطالعه: 10 دقیقه
۳
(۳)

دیزاین پترن ها را میشود یک نوع الگو طراحی در برنامه نویسی تعریف کرد.

الگو طراحی چیست؟

الگو طراحی یا دیزاین پترن ها راه حلی مناسب برای مشکلات رایج در طراحی نرم افزار هستند شناخت این الگو ها و به کار بردن آن ها در برنامه باعث تمایز یک برنامه نویس حرفه ایی از یک برنامه نویس معمولی میشود.
در طول زمان برنامه نویسان برای توسعه نرم افزار ها با مشکلات زیادی مواجه می شدند برای حل این مشکلات راه حل های زیادی مطرح میشد اما استفاده از دیزاین پترن ها بهترین روش برای حل این نوع از مشکلات بود .
لازم به ذکر است که الگو های طراحی مستقل از زبان های برنامه نویسی هستند و فقط در قلمرو برنامه نویسی شی گرا وارد می شوند

تاریخچه الگو های طراحی

الگوهای طراحی برای اولین بار توسط یک گروه ۴ نفره به نام GOF معرفی شدند. این گروه الگوهای طراحی را از نظر کاربرد در قالب کتابی منتشر کردند این گروه به معرفی ۲۳ تا از الگوهای طراحی پرداختند و این ۲۳ الگو را به سه دسته الگوهای ایجادی الگوهای ساختاری و الگوهای رفتاری قرار دادند.

سه دسته کلی از دیزاین پترن ها:

  • Creational Design Patterns
    Structural Design Patterns
    Behavioral Design Patterns

الگوهای ساختاری

این دیزاین پترن برای مدیریت ارتباط میان کلاس ها و شی ها با یکدیگر استفاده می شود در واقع به ما میگن که سازماندهی درون یک آبجکت به چه شکلی باشه چه پراپرتی های داشته باشه و ساختارشو برامون تشریح میکنه. این الگو های طراحی عبارت اند از:

  • Adapter
    Decorator
    Facade
    Bridge
    Composite
    Flyweight
    Proxy

الگوهای سازنده

این الگو طراحی برای حل مشکلات مربوط به ایجاد اشیا در نرم افزار ارئه میشود و ما را در ساخت آبجکت راهنمایی میکند و در واقع بهمون میگه که چطور آبجکت بسازیم. دیزاین پترن های سازنده عبارت اند از:

  • Singleton
    Factory Method
    Prototype
    Abstract Factory
    Builder
    Object Pool

الگوهای رفتاری

این پترن ها مربوط به تعامل و ارتباط اشیا هستند و در واقع رفتار و کردار یک آبجکت و کلاس رو برامون تشریح میکند. و عبارت اند از:

  • Chain of responsibility
    Strategy
    Iterator
    Command
    Mediator
    Memento
    Observer
    State
    Template Method
    Visitor

در ادامه میخواهیم بعضی از دیزاین پترن ها را با ارائه مثال توضیح بدم تا شما با الگوهای طراحی بیشتر آشنا بشید. مثال های الگو های طراحی ترجیحا در قالب زبان سویفت است.

با توجه به اینکه بحث دیزاین پترن ها یکی از مباحثی که در قالب یه مقاله نمیتوان به همه نکات و جزئیات آن اشاره کرد
امیدوارم خواندن این مطلب گامی باشه تا شما به دنبال اطلاعات بیشتری راجب این الگوهای طراحی باشید.

۱. Singleton

این الگو یکی از مهم ترین الگوهاست و مشکلات زیادی را هم حل کرده است و هدف اصلی آن این است که در هر لحظه بیش از یک آبجکت از یک کلاس وجود نداشته باشد مثلا اپلیکیشن . هر اپ یه دونه اپلیکیشن است و میتونیم یک آبجکت ثابت داشته باشیم و همه اطلاعات رو در سراسر اجرای برنامه در یک اپلیکیشن واحد داشته باشیم . این آبجکت ها نباید قابل نمونه سازی یا ارث بری باشند چون میخواهیم فقط یه دونه از این آبجکت ها در اپ باشد .
در سویفت از این آبجکت ها داریم مثلا : UIApplication , UIScreen , Notification Center ,…
این آبجکت ها در کل اپ فقط یک بار ساخته میشن و تا آخر اجرای اپ هم همیشه زنده میمونن به طور مثال هر اپ فقط یک اپلیکیشن هستش یا فقط یک اسکرین دارد و …

۲. Observer

میخواهیم بعضی از آبجکت ها تغییرات آبجکت های دیگر را دنبال کنند یعنی اگر تغییراتی در یک آبجکت دیگر داده شود متوجه شوند و کار دیگری انجام دهند.
این الگو از دو نوع آبجکت تشکیل شده است Observable و Observer که یکی Event تولید میکند و یکی به Event ها پاسخ می دهد. هرگاه وضعیت آبجکت Observable تغییر کند تمام آبجکت های Observer ثبت شده در آبجکت خود را فراخوانی می کند و می گوید وضعیت من تغییر کرده است.
در سویفت KVO است که اجازه میده اشیا از تغییر وضعیت یک شی دیگر مطلع شوند.

وقتی نتوانیم به هر دلیلی یک کد را ویرایش یا ریفکتور کنیم و اگر بخواهیم متدی به این کلاس اضافه کنیم از این الگو استفاده میکنیم. و یکی از کاربردهای آن رفع مشکل ارث بری کلاس از تنها یک کلاس است.

۴. Facada

نقش یک واسط را دارد. یکی از کاربردهای ان زمانی است که میخواهیم قبل از ارسال داده ها پردازش هایی روی ان ها انجام دهیم.

۵. Adaptor

مسئول تطبیق برنامه با API سایر برنامه ها است مثلا یک آبجکت می سازیم و آن را به متدهای یک آبجکت دیگر تبدیل می کنیم .
به طور مثال فرض کنید دو کلاس را که در شرایط مختلف کارهای مختلف انجام میدهند را با هم مرج کنیم . این کلاس ها به شدت در جاهای مختلف برنامه استفاده شدن پس حذف آن ها مشکل است و هم چنین نمیتوانیم یک کلاس را به جای آن دو کلاس بنویسیم و همه جای برنامه مه از این دو کلاس استفاده شده بود رو تغییر بدیم هم چنین این تغییرات مسبب آن میشود که همه بخش های سیستم را دوباره تست کنیم و در نهایت ممکنه کلی مشکل و باگ به وجود بیاد.
به جای این کارهای میتوانیم از دو الگوی استرانژی و آداپتر استفاده کنیم که این مسئله رو به راحتی حل میکند.

مزایای استفاده از دیزاین پترن ها

دیزاین پترن ها با استفاده درست از اصول برنامه نویسی شی گرا مزایا زیادی را در اختیار برنامه نویسان قرار میدهند که به مواردی در زیر اشاره می شود:

  • Scalability
    Expandability
    Flexibility
    افزایش سرعت توسعه نرم افزار
    کاهش خطاها و مشکلات
    کاهش میزان کد نویسی

نتیجه گیری

شناخت مفاهیم الگوهای طراحی برای همه برنامه نویسان یک امر ضروری است زیرا الگوهای طراحی با هدف رفع مشکلات رایج در کد نویسی و استاندارد ساختن فرآیند توسعه نرم افزار ارائه شده اند.
برنامه نویسان با به کارگیری الگوهای طراحی میتوانند نرم افزار هایی با مزیت های که در بالا به ان اشاره شده توسعه دهند . به این نکته مهم توجه داشته باشید که دیزاین پترن مثل چاقوی دو لبه است اگر در جای نادرست استفاده شود میتواند باعث بروز مشکلاتی برای پروژه شود ولی اگر در جای درستی استفاده شود میتواند باعث نجات برنامه نویسان و توسعه دهندگان از مشکلاتی پیش رو گردد.

چه رتبه ای می‌دهید؟

میانگین ۳ / ۵. از مجموع ۳

اولین نفر باش

title sign
دانلود مقاله
دیزاین پترن چیست؟
فرمت PDF
6 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
فاطمه نجفی مقدم
مقالات
1 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
فاطمه نجفی مقدم
title sign
معرفی محصول
title sign
دیدگاه کاربران