مجید ایمان زاده
مجید ایمان زاده
خواندن ۳ دقیقه·۱ سال پیش

چطور از دیزاین پترن ها استفاده کنیم؟ (متا دیزاین پترن ها)

مهندسی نرم افزار خیلی قشنگ تر میشه اگر همه چی ثابت بمونه ولی متاسفانه تغییرات در توسعه نرم افزار خیلی بالاست و این رویای ثابت بودن بیزینس لاجیک شاید تا حد زیادی رویا باشه. شما همیشه باید منتظر تغییرات و اصلاحات اساسی از سمت تیم بیزینس باشید.

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


دیزاین پترن ها فقط بدرد مصاحبه میخوره

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

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


من هیچ وقت نمیتونم ازشون استفاده کنم

تا حالا بهش فکر کردید چرا؟ دلیل اول اینکه شما قبل از استفاده از دیزاین پترن باید با مفاهیم دیگه ی OOP اشنا بشید. یکی از مفاهیمی که خیلی مهمه SOLID هست. اول از همه تسلط خیلی مناسبی نسبت این الگوهای طراحی پیدا کنید. شما تا زمانی که این الگوها رو توی کد خودتون رعایت نکنید هیچ وقت نمیتونید از دیزاین پترن ها درست استفاده کنید و تشخیص درستی داشته باشید که از کدوم دیزاین پترن استفاده کنیم.

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

مورد بعدی که خیلی توی پیاده سازی و استفاده از دیزاین پترن ها تاثیر داره متا دیزاین پترن ها هستند. متا دیزاین پترن ها توی کتاب Gang of four معرفی شدن و مکمل استفاده از دیزاین پترن ها هستن.

این متا دیزاین پترن ها شامل موارد زیر هستند:

  • Separate out the things that change from those that stay the same
  • Program to an interface, not an implementation
  • Prefer composition over inheritance
  • Delegate, delegate, delegate

مورد هم بعدی هم توی Gang of four اشاره نشده ولی خیلی کمک تون میکنه YAGNI هست

  • You ain’t gonna need it

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

باز هم تاکید میکنم. دیزاین پترن ها را حفظ نکنید. دیزاین پترن ها رو بخونید ولی حفظ نکنید سعی کنید تسلط بالایی به موارد فوق که ذکر کردم برسید

اگر عمری بود حتما در خصوص موارد بالا مطالبی خواهم نوشت با مثال.


دیزاین پترن‌هانرم افزار
یک توسعه دهنده سمت سرور ساده
شاید از این پست‌ها خوشتان بیاید