در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش دیزاین پترن (Design Patterns) قسمت 2 : معرفی الگوها

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

مقدمه ای بر Object Oriented Design Patterns

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

بدون اینکه مجبور به کشف مجدد آنها باشد. شباهت ها می­توانند به تجسم نقاط مشترک بین الگوهای ،کمک کنند.الگوهای طراحی، استفاده مجدد از طرح ها و معماری های موفق را آسانتر می کنند. بیان نمودن تکنیک های اثبات شده و کارا بصورت الگوهای طراحی، آنها را برای برنامه نویسان سیستم های جدید بسیار قابل دسترس تر می کند. الگوهای طراحی به شما کمک می کنند تا از بین انتخاب های موجود، طرح هایی را بکار گیرید که قابلیت استفاده مجدد از سیستم شما را بالا می برند و از انتخاب طرح هایی که قابلیت استفاده مجدد را کاهش می دهند، جلوگیری می کنند. بصورت ساده تر؛ الگوهای طراحی به طراح کمک می کنند تا طرح صحیح را سریعتر بیابد. هر الگو مسأله اي را شرح مي دهد که در محيط ما به طور مکرر رخ داده ، و سپس راه حل اصلي مسأله را شرح مي دهد ، به گونه اي که مي توانيد بيش از يک ميليون بار از اين راه حل استفاده کنيد ، بدون اين که دوبار آن را به يک طريق اجرا کنيد.

انواع الگوهای طراحی یا Design Pattern

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

طبقه بندی الگوهای طراحی

ما با دو ضابطه الگوهاي طراحي را طبقه بندي مي کنيم . ضابطه ي اول که هدف ناميده مي شود منعکس کننده کار الگو است . الگوها مي توانند داراي اهداف آفرينش(creational) ، ساختاري(structural) يا رفتاري(behavioral) مي باشند . الگوهاي آفرينش به فرآيند ايجاد اشیا مربوط مي شوند . الگوهاي ساختاري به ترکيب کلاس ها يا اشیا مي پردازند . الگوهاي رفتاري شيوه هايي را که در آن ها کلاس ها يا اشیا تعامل مي کنند را مشخص کرده و وظایف را توزيع مي کنند .ضابطه دوم که حوزه(Scope) ناميده مي شود و مشخص مي کند که الگو در مرحله نخست در کلاس ها يا اشیا به کار مي رود . الگوهاي کلاس به روابط ميان کلاس ها و کلاس هاي فرعي آن ها مي پردازد . اين روابط به گونه اي از طريق وراثت مستقر مي گردند که در زمان کامپايل ايستا باشند . الگوهاي شی به روابط اشیا مي پردازند که مي تواند در حين اجرا تغيير کنند و پوياتر هستند . تقريبا کليه الگوها تا حدي از وراثت استفاده مي کنند . توجه داشته باشيد اغلب الگوها در حوزه شی قرار مي گيرند .

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

شيوه هاي ديگري جهت سازماندهي الگوها وجود دارد. اغلب بعضي از الگوها با يکديگر استفاده مي شوند . به عنوان مثال ، اغلب Composite با Iterator يا Visitor استفاده مي شود . بعضي الگوها جايگزين هستند : اغلب الگو ي Prototype جايگزين Abstract Factory است . بعضي الگوها با وجود آن که داراي هدف هاي متفاوتي هستند به طراحي مشابه منجر مي شوند .به عنوان مثال ، نمودارهاي ساختار Composite و Decorator مشابه هستند .روشن است که راههاي بسياري براي سازماندهي الگوهاي طراحي وجود دارد. داشتن چندين راه براي فکر کردن درباره الگوها ، بينش شما را در مورد اين که آنها چه کاري انجام مي دهند، چگونه مقايسه مي شوند و چه وقت به کار گرفته مي شوند، عميق تر مي کند.

ارتباط بین الگوهای طراحی

در ادامه به معرفی کوتاهی در باره ی الگوهای طراحی می پردازیم :

  1. Abstract Factory: خانواده هایی از اشیا که اعضای خانواده به یکدیگر مرتبط هستند را تولید می کند.
  2. Adapter: اینترفیسی ایجاد می کند که کلاس هایی که با هم مرتبط نیستند بتوانند با یکدیگر کار کنند.
  3. Bridge" جدا ساختن قسمت پیاده سازی از قسمت انتزاعی یک کلاس برای این که دو طرف بتوانند به راحتی و مستقلا تغییر کنند.
  4. Builder: ساخت يک شی پيجيده را به گونه اي از نمايش آن مجزا مي کند که همان فرآيند ساخت مي تواند نمایش های متفاوتی ایجاد کند.
  5. Chain of Responsibility: در قالب یک زنجیره از اشیا به درخواست کاربر پاسخ می دهد.
  6. Command: مشخص می کند که یک عملیات(operation) چگونه انجام شود و انجام آن ها را مدیریت می کند.
  7. Composite: اشیا را در ساختارهاي درختي ترکيب مي کند. Composite به کاربران اجازه مي دهد با اشیا منفرد و اشیا ترکيبي به طور يکسان برخورد کنند.
  8. Decorator: مسؤوليت هاي اضافي را به طور ديناميک به يک شی ضميمه مي کند . Decorator ها جايگزيني انعطاف پذير جهت طبقه بندي فرعي براي توسعه عملکرد مهيا مي کنند .
  9. Facade: اینترفیسي يکنواخت براي مجموعه ميانجي هاي موجود در يک کلاس فرعي مهيا مي کند . نماي خارجي، اینترفیس سطح بالاتري را تعريف مي کند که استفاده از سيستم فرعي را ساده تر مي کند .
  10. Factory Method: يک اینترفیس جهت ايجاد يک شی تعيين مي کند ، ولي اجازه مي دهد کلاس هاي فرعي تصميم بگيرند کدام کلاس را معرفي کند
  11. Flyweight: زمانی استفاده می شود که تعداد اشیا بسیار زیاد باشد و مدیریت آنها سخت باشد.
  12. Interpreter: جهت تعریف گرامرهای یک زبان و تفسیر جملات استفاده می شود که تنها در طراحی کامپایلرها کاربرد دارد.
  13. Iterator: شيوه اي جهت دسترسي به عناصر يک شی بهم پيوسته به طور متوالي تدارک مي بيند بدون اين که نمايش موجود را دچار مخاطره کند .
  14. Mediator: شیئی را تعيين مي کند که چگونگي تعامل يک مجموعه اشیا را در یک محفظه قرار مي دهد. همچنین باعث می شود که اشیا به طور دو به دو کمتر با هم ارتباط داشته باشند و پدیده ی coupling کمتر شود.
  15. Memento: حالت دروني يک شی را به گونه اي دقيق ذخیره می کند که بعدا بتوان شی را به اين حالت بازگرداند.
  16. Observer: يک وابستگي يک به چند ميان اشیا را به گونه اي تعريف مي کند که هنگامي که يک شی تغيير کند کليه موارد وابسته به آن متوجه شده و به طور خودکار بهنگام سازي شوند .
  17. Prototype: برای ساخت و کپی کردن شیئی جدید که خواص شی اصلی را داشته باشد.
  18. Proxy: براي شی ديگر يک جانشين يا جاي گيرنده فراهم مي کند تا چگونگي دسترسي به آن را کنترل کند .
  19. Singleton: تضمين مي کند که يک کلاس فقط يک نمونه داشته باشد ، و يک نمونه ي کلي جهت دسترسي به آن را مهيا کند .
  20. State: به يک شی اجازه مي دهد هنگامي که حالت دروني آن تغيير کرد رفتار خود را عوض کند . به نظر مي رسد که شی کلاس خود را عوض مي کند .
  21. Strategy: يک خانواده از الگوريتم ها را تعريف کرده ، هر يک را در پوشش قرار داده و آن ها را قابل تعویض مي سازد . استراتژي اجازه مي دهد الگوريتم به طور مستقل از کاربران که از آن استفاد مي کنند متفاوت باشد .
  22. Template Method: اسکلت بندي الگوريتم در يک عمليات را تعريف کرده ، پیاده سازی بعضي مراحل را یه کلاس های فرعی می سپارد. همچنین به کلاس هاي فرعي مجال مي دهد بعضي مراحل يک الگوريتم را بدون تغيير ساختار الگوريتم دوباره تعريف کند .
  23. Visitor: ويزيتور به شما مجال مي دهد عمليات جديد را بدون تغيير کلاس هاي عناصري که در آن کار مي کند تغيير دهيد .

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

نویسنده : مهدی عادلی

منبع : جزیره برنامه نویسی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#الگوهای_طراحی #کاربرد_design_pattern #آموزش_الگوهای_طراحی #شی_گرایی #الگوهای_طراحی_در_نرم_افزار #طراحی_و_توسعه_نرم_افزار #آموزش_برنامه_نویسی #الگوهای_طراحی_شی_گرا #design_pattern_چیست
عنوان
1 آموزش دیزاین پترن (Design Patterns) قسمت 1 : اطلاعات پایه رایگان
2 آموزش دیزاین پترن (Design Patterns) قسمت 2 : معرفی الگوها رایگان
3 آموزش دیزاین پترن (Design Patterns) قسمت 3 : Singleton و Adapter رایگان
4 آموزش دیزاین پترن (Design Patterns) قسمت 4 : الگوی Observer رایگان
5 آموزش دیزاین پترن (Design Patterns) قسمت 5 : الگوی Iterator رایگان
6 آموزش دیزاین پترن (Design Patterns) قسمت 6 : الگوی Command رایگان
7 آموزش دیزاین پترن (Design Patterns) قسمت 7 : الگوی Mediator رایگان
8 آموزش دیزاین پترن (Design Patterns) قسمت 8 : الگوی Memento رایگان
9 آموزش دیزاین پترن (Design Patterns) قسمت 9 : الگوی Strategy رایگان
10 آموزش دیزاین پترن (Design Patterns) قسمت 10 :الگوی Factory Method رایگان
11 آموزش دیزاین پترن (Design Patterns) قسمت 11 : الگوی State رایگان
زمان و قیمت کل 0″ 0
1 نظر
reza12

بابا دمتون گرم توی اینترنت هرچی سرچ میکنم وصل میشم به سایت شما

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....