آشنایی با مفهومی تحت عنوان دیزاین پترن در برنامه نویسی شیء گرایی


در دنیای برنامه نویسی شیء گرایی، کمتر برنامه نویسی که حرفه‌ای باشد را می‌توان یافت که با چیزی تحت عنوان Design Patterns (دیزاین پترن یا الگوهای طراحی) آشنا نباشد. به طور خلاصه، منظور از دیزاین پترن راه کارهایی اصولی و در عین تست شده است که در پاسخ به چالش هایی ایجاد شده‌اند که در توسعه ی نرم‌افزار با آن‌ها مواجه خواهیم شد. از یک بعد دیگر، دیزاین پترن ها را می‌توان به عنوان یکسری Best Practices نیز در نظر گرفت.

به خاطر داشته باشید
در برنامه نویسی یا به طور کلی هر مهارتی، Best Practices به یکسری اصول و قوانینی گفته می‌شود که توسط جامعه ی گسترده ای از کاربران حرفه‌ای مورد استفاده قرار می‌گیرد و همین مسأله منجر گشته تا به صورت یک قانون کلی نانوشته درآیند که توصیه می‌شود افراد مبتدی نیز از این قوانین تبعیت کنند. برای روشن شدن این مسأله مثالی می زنیم. یک Best Practice در نامگذاری کلاس‌ها این است که آن‌ها را به صورت PascalCase بنویسیم. به عبارت دیگر، حرف اول کلیه ی کلمات در نام کلاس به صورت بزرگ نوشته شود. توجه داشته باشیم که اگر از این قانون تبعیت نکنیم هیچ مشکلی به وجود نمی‌آید اما بهتر آن است که نامگذاری های ما به این شکل باشند.

در حقیقت، دیزاین پترن ها به برنامه نویس کمک می‌کنند تا به بهترین شکل ممکن ساختار برنامه ی خود را بچینند تا بتوانند بهترین نتیجه را دریافت کنند. توجه داشته باشیم که دیزاین پترن ها اصلا در جزئیات یک نرم‌ افزار دخالتی نمی‌کنند و این در حالی است که یک دید کلی به برنامه نویس می دهند.

برای روشن شدن این مسأله مثالی می زنیم. فرض کنیم که در برنامه ی خود یک کلاس داریم که از روی آن چند آبجکت ساخته ایم. ما نیاز داریم که اگر یکی از این آبجکت ها دستخوش تغییر شد، سایر آبجکت ها به این تغییر پی ببرند و بالتبع رفتار متفاوتی از خود نشان دهند. برای انجام این کار، راه کارهای بسیاری وجود دارد اما از میان آن‌ها یک راه‌کار -یا بهتر بگوییم یک دیزاین پترن- است که تست شده و قابل اعتماد است و با خیال راحت می‌توان آن استایل برنامه نویسی را مورد استفاده قرار داد که Observer Design Pattern نام دارد.

مثال دیگری می زنیم. فرض کنیم که یک آبجکت توسط یکسری آبجکت دیگر دستخوش تغییر می‌شود اما ما نیاز داریم تا تغییر آخر را اصطلاحاً Undo یا «لغو» کنیم. در اینجا هم می‌توان روش‌های بسیار متنوعی را برای انجام این کار در نظر گرفت اما روش یا دیزاین پترنی که توصیه می‌شود Memento Design Pattern نام دارد که تست شده است و همان نتیجه‌ای که ما می‌خواهیم را در اختیارمان قرار می دهد.

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

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

Creational Patterns
Abstract Factory
Builder
Factory Method
Prototype
Singleton

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

Structural Patterns
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

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

Behavioral Patterns
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor

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

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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محسن
محسن
یکی از اصول برنامه نویسی که بسیاری از قوانین و پترن های دیگه هم به نوعی مبتنی بر اون هستن
قانونDRY یا "دوباره کاری نکن"
(Don\t Repeat Yourself) هست، به صورت خلاصه این قانون یعنی اگر قسمتی از کد داپلیکیت هست و به نوعی تکراری نوشته شده باید حذف بشه و در قابل یک قطعه کد نوشه بشه
این مشکل برای مثلا در CSS ممکن هست خیلی پیش بیاد که font-family یکسان برای قسمت های مختلف صفحه چندبار فراخوانی بشه، اما با فراخوانی قانون font-family برای تگ های html یا body یک بار میشه این کد رو نوشت وبعد ازاون در تمام صفحه استفاده کرد
پویا نظری
پویا نظریتوسعه‌دهنده‌ موبایل اپ، دانشجوی نرم‌افزار
عالیییییی
آیا باید به زود منتظر یک آموزش با مضمون دیزاین پترن های از سوی سکان باشیم؟؟
ادمین سایت
ادمین سایت
با سلام خدمت شما کاربر گرامی،
احتراماً به استحضار می‌رساند که در حال حاضر هیچ دورهٔ جدید اضافه نخواهد شد.

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

امیر
امیر
...و در عین (حال) تست شده است...
شاهین
شاهین
با سلام و عرض ادب
شما نکات و نقاطی از برنامه نویسی رو آموزش میدین که اکثر آموزشگاهها و حتی اساتید دانشگاهمون (حالا یا عامدانه یا سهوا ) بهش اشاره نمیکنن. بعضی از مطالبتون رو جسته گریخته توو Quora و فرومهای مختلف دیده بودم ، ولی انقدر خلاصه و درست و دقیق نه. دو روز پیش که به سایتتون برخوردم واقعن خوشحال شدم. خیلی از سردرگمی هام برطرف شد و البته هنوز همون php کد میزنم، اما با یک دید بسیار بازتر. لذت برنامه نویسی اوپن سورس رو بهم برگردوندید. دست مریزاد. خدا خیرتون بده.
ادمین سایت
ادمین سایت
شاهین عزیز سلام
کامنت شما که سرشار از انرژی مثبت است که به ما توان لازم برای ادامه ی راه را می دهد.
تیم سکان آکادمی را از دعای خیر خویش محروم نفرمایید.

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

payam6054
payam6054
منکه واقعا فصل هفت رو هیچییییییییییی نفهمیدم
رضا بختیاری
رضا بختیاری
اين قسمت هم عالي بود .... < مرسي >
محمد مهدی  رفیعی
محمد مهدی رفیعی
خیلی خوبه که در آموزش اصول برنامه نویسی برای افراد مبتدی مباحث پیشرفته برای افراد حرفه ای هم بیان کردید . هر دو نوع کاربر با اینکار جذب میکنید . موفق باشید .
ccc ccc
ccc ccc
این کتاب یک اسم دیگه ای هم داره به نام GOF = Gang Of For. البته نمی دونم چرا همچین اسمی داره.
حمیدرضا
حمیدرضا
What is Gang of Four (GOF)?

In 1994, four authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides published a book titled Design Patterns - Elements of Reusable Object-Oriented Software which initiated the concept of Design Pattern in Software development.

These authors are collectively known as Gang of Four (GOF). According to these authors design patterns are primarily based on the following principles of object orientated design.

Program to an interface not an implementation

چهار نویسنده کتاب با هم معروف هستند به Gang of four واسه همین اسم کتاب رو GOF گذاشتند.

در پاسخ به