SlideShare a Scribd company logo
1 of 45
Download to read offline
‫با‬ ‫آشنایی‬
Design
Pattern
‫رحیمی‬ ‫رضا‬
Rtwo.ir
‫تابستان‬95
Reza Rahimi
14 Years Experience
Programing With : C, C++,
Asembly, Delphi , Cbuilder,
PHP, ASP.NET webform and
MVC, Angular2
Other : SEO , SharePoint ,
Security in web application,
web master
Website: rtwo.ir
Email : jobfa.com@gmail.com
“
”
‫ﻗابﻠیﺖ‬‫ا‬‫ﺳتﻔا‬‫ده‬‫ﻣﺠﺪ‬‫د‬
‫هدف‬‫در‬‫جمله‬ ‫یک‬
‫کنیم‬ ‫بحث‬ ‫ﻗراره‬ ‫چی‬
‫ا‬‫ﭼﯿﺴﺖ‬ ‫ﻟﮕﻮ‬‫؟‬
‫از‬ ‫باید‬ ‫ﭼرا‬Design Pattern‫کنﯿم‬ ‫استفاده‬ ‫ها‬‫؟‬
‫ﭼه‬‫از‬ ‫باید‬ ‫زمانی‬Design Pattern‫کنﯿم؟‬ ‫استفاده‬ ‫ها‬
‫ﺗا‬‫ر‬‫یﺨﭽه‬‫ا‬‫ﻟﮕﻮها‬‫ي‬‫ﻃر‬‫ا‬‫ﺣی‬
‫ا‬‫ستاند‬‫ارد‬‫ا‬‫ﻟﮕﻮ‬‫ها‬
‫د‬‫بند‬ ‫سته‬‫ي‬‫ا‬‫ﻟﮕﻮها‬
‫مﺰ‬‫ا‬‫یا‬‫ي‬‫ا‬‫ﻟﮕﻮها‬‫ي‬‫ﻃر‬‫ا‬‫ﺣی‬
‫معرفی‬‫اﻟﮕﻮها‬
‫منابﻊ‬
Pattern‫چیسﺖ‬ ‫الگو‬ ‫یا‬
Pattern‫ا‬ ‫یا‬‫ﻟﮕﻮ‬‫ﺗﻮﺻﯿفی‬‫از‬‫مﺴاﻟه‬‫ا‬ ‫و‬‫سا‬‫راه‬ ‫س‬‫ﺣﻞ‬‫آن‬‫ا‬‫سﺖ‬،‫ﻃﻮ‬ ‫به‬‫ري‬‫که‬‫ا‬‫یﻦ‬‫راه‬‫می‬ ‫ﺣﻞ‬
‫ﺗﻮ‬‫ا‬‫ها‬ ‫شﮑﻞ‬ ‫به‬ ‫ند‬‫ي‬‫مﻮ‬ ‫مﺨتلفی‬‫ا‬ ‫رد‬‫ستفا‬‫ده‬‫ﻗر‬‫ار‬‫ﮔﯿر‬‫د‬.
Framework‫؟‬ ‫چیسﺖ‬(‫از‬‫د‬‫یﺪﮔا‬‫شی‬ ‫ه‬‫ﮔر‬‫ایی‬)
‫یک‬Framework‫از‬ ‫عبارﺗﺴﺖ‬‫مﺠمﻮعه‬‫از‬ ‫اي‬‫کﻼ‬‫س‬‫ﺗرکﯿﺐ‬ ‫با‬ ‫که‬ ‫هایی‬‫و‬‫کا‬‫در‬ ‫ر‬‫کنا‬‫ر‬‫هم‬،‫یک‬
‫ﻃر‬‫ا‬‫ﻗابلﯿﺖ‬ ‫با‬ ‫ﺣی‬‫ا‬‫ستفا‬‫ده‬‫مﺠد‬‫د‬‫بر‬‫اي‬‫یک‬‫کﻼ‬‫س‬‫ﺧا‬‫ص‬‫از‬‫نر‬‫ا‬ ‫م‬‫فﺰ‬‫ا‬ ‫ار‬‫یﺠا‬‫د‬‫می‬‫کنند‬.
‫ﻭ‬ ‫ﻗﺪیمی‬ ‫رﻭشﻬاﯼ‬‫کﻼﺳیﮏ‬‫ﻧیازﻫاﯼ‬ ‫ﺟوابگوﯼ‬
‫ﻧرﻡ‬ ‫بازار‬ ‫رﻭز‬‫اﻓﺰار‬‫ﻧبود‬
‫اﻓﺰارﻫا‬ ‫ﻧرﻡ‬ ‫پیچیﺪﮔی‬ ‫ﻭ‬ ‫ﺳایﺰ‬ ‫رشﺪ‬ ‫با‬
“
”‫ﻣشک‬ ‫به‬ ‫شﺪه‬ ‫ثابﺖ‬ ‫ﻫاﯼ‬ ‫ﺟواب‬ ‫یکسرﯼ‬‫ﻼت‬
‫ﻫستنﺪ‬ ‫طراحی‬ ‫در‬ ‫رایج‬
Design Pattern‫ﭼﯿﺴﺖ‬‫؟‬
“
”‫ا‬‫لگوﻫا‬‫ﻭ‬‫ز‬‫با‬‫ا‬ ‫ن‬‫لگوﻫا‬‫رﻭ‬‫شی‬‫بر‬‫اﯼ‬‫توﺻیﻒ‬
‫بﻬتریﻦ‬‫ﻫاﯼ‬ ‫،طراحی‬ ‫عمل‬‫ﺧو‬‫ب‬‫ا‬ ‫ﻭ‬‫ﻧتﻘا‬‫ل‬
‫تﺠربه‬‫ا‬‫ﺳﺖ‬
Design Pattern‫؟‬ ‫ﭼﯿﺴﺖ‬
“
”‫ﻣست‬ ‫بتوان‬ ‫که‬ ‫ﻧیستنﺪ‬ ‫اﯼ‬ ‫آﻣاده‬ ‫کﺪﻫاﯼ‬‫از‬ ً‫ا‬‫ﻘیم‬
‫کرد‬ ‫اﺳتﻔاده‬ ‫ﻫا‬ ‫آن‬.‫اﻣا‬‫ﺳرﯼ‬ ‫یﮏ‬‫ی‬ ‫رﻭیکرد‬‫ا‬
‫عادﯼ‬ ‫ﻫاﯼ‬ ‫چالش‬ ‫حل‬ ‫براﯼ‬ ‫ﻧظریه‬
‫طراحی‬‫دﻫنﺪ‬ ‫ﻣی‬ ‫ارائه‬
Design Pattern‫؟‬ ‫ﭼﯿﺴﺖ‬
Design Pattern
=
‫مﺴاﻟه‬ ‫ﺗﻮﺻﯿﻒ‬+‫بﻬتریﻦ‬‫راه‬‫ﺣﻞ‬
“
”
‫ا‬‫فﺰ‬‫ا‬‫یﺶ‬‫سرعﺖ‬‫در‬‫ﻃر‬‫ا‬‫ﺣی‬
‫ها‬ ‫سﯿﺴتم‬
‫هدف‬‫اﻟﮕﻮها‬
“
”
‫عملﯿات‬‫با‬ ‫و‬ ‫مقرر‬ ‫زمان‬ ‫در‬ ‫ﺗﻮسعه‬
‫برسد‬ ‫انﺠام‬ ‫به‬ ‫باالﺗری‬ ‫کﯿفﯿﺖ‬
‫اﻟﮕﻮها‬ ‫از‬ ‫استفاده‬ ‫مﺰایای‬
‫از‬ ‫بایﺪ‬ ‫زﻣاﻧی‬ ‫چه‬Design Pattern‫کنیم؟‬ ‫اﺳتﻔاده‬ ‫ﻫا‬
‫می‬ ‫ارائه‬ ‫آن‬ ‫برای‬ ‫استاندارد‬ ‫ﺣﻞ‬ ‫راه‬ ‫یک‬ ‫و‬ ‫مﯿﮑند‬ ‫ﺻحبﺖ‬ ‫طراﺣی‬ ‫مشﮑﻞ‬ ‫یک‬ ‫درباره‬ ‫اﻟﮕﻮ‬ ‫هر‬
‫دهد‬.‫ﺻرف‬ ‫طراﺣی‬ ‫مﺴائﻞ‬ ‫ﺗحلﯿﻞ‬ ‫و‬ ‫ﺗﺠﺰیه‬ ‫برای‬ ‫وﻗﺖ‬ ‫کمی‬ ‫آنﻬا‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫ﻗبﻞ‬ ‫بنابرایﻦ‬‫کنﯿد‬
‫دهﯿد‬ ‫ﺗطبﯿق‬ ‫اﻟﮕﻮ‬ ‫های‬ ‫ﺗﻮﺻﯿﻒ‬ ‫با‬ ‫را‬ ‫آن‬ ‫کنﯿد‬ ‫سعی‬ ‫و‬.
‫بایﺪ‬ ‫چرا‬Design Pattern‫را‬ ‫ها‬‫شناﺧﺖ‬
‫آشناﻳی‬‫افﺰار‬ ‫نرم‬ ‫ﻃراﺣی‬ ‫کلﻲ‬ ‫های‬ ‫مدﻝ‬ ‫با‬‫اسا‬ ‫نقﺶ‬‫سی‬‫در‬،‫درﮎ‬‫اجﺰای‬ ‫مﯿان‬ ‫کلی‬ ‫روابﻂ‬
‫بﻬبﻮد‬ ‫مدﻝ‬ ‫ﻗاﻟﺐ‬ ‫در‬ ‫را‬ ‫جدﻳد‬ ‫سﯿﺴتم‬ ‫که‬ ‫سازد‬ ‫مﻲ‬ ‫ﻗادر‬ ‫را‬ ‫ﻃراﺡ‬ ‫و‬ ‫کند‬ ‫مﻲ‬ ‫بازی‬ ‫افﺰار‬ ‫نرم‬
‫نﻬاﻳﻲ‬ ‫های‬ ‫هﺰﻳنه‬ ‫کاهﺶ‬ ‫باعﺚ‬ ‫ﺗﻮاند‬ ‫می‬ ‫ﺧﻮد‬ ‫اﻳﻦ‬ ‫که‬ ‫نماﻳد‬ ‫اﻳﺠاد‬ ‫ﭘﯿشﯿﻦ‬ ‫سﯿﺴتم‬ ‫ﻳافته‬
‫افﺰار‬ ‫نرم‬ ‫ﺗﻮﻟﯿد‬‫شﻮد‬
‫ساز‬ ‫زمﯿنه‬ ‫افﺰار‬ ‫نرم‬ ‫ﻳک‬ ‫برای‬ ‫معماری‬ ‫مناسﺐ‬ ‫مدﻝ‬ ‫انتﺨاﺏ‬‫در‬ ‫بﻮد‬ ‫ﺧﻮاهد‬ ‫آن‬ ‫مﻮفقﯿﺖ‬‫ﺣ‬‫اﻟی‬
‫که‬‫می‬ ‫ﻏلﻂ‬ ‫مدﻝ‬ ‫انتﺨاﺏ‬‫ﺗﻮاند‬‫بﯿاورد‬ ‫بار‬ ‫به‬ ‫فاجعه‬
‫شناﺧﺖ‬‫هر‬ ‫جﺰئﯿات‬‫ﻳک‬،‫معماری‬ ‫های‬ ‫سبک‬ ‫از‬‫به‬‫از‬ ‫بﻬتر‬ ‫ﻃراﺣی‬ ‫انتﺨاﺏ‬ ‫در‬ ‫سﯿﺴتم‬ ‫معمار‬
‫کمک‬ ‫مﻮجﻮد‬ ‫های‬ ‫ﮔﺰﻳنه‬ ‫مﯿان‬‫مﻲ‬‫کند‬.
‫واژ‬ ‫به‬ ‫نﯿاز‬‫ﮔا‬‫ن‬‫مشتر‬‫داریم‬ ‫ﮎ‬
‫تاریخچه‬
‫اﻟﮕﻮها‬‫ﺗﻮسﻂ‬ ‫ابتدا‬‫اﻟﮑﺴاندر‬ ‫کریﺴتﻮف‬‫شد‬ ‫ارایه‬(‫کریﺴتﻮف‬‫طراﺣی‬ ‫اﻟﮕﻮی‬ ‫اﻟﮑﺴاندر‬‫راه‬ ‫را‬
‫رخ‬ ‫اطراف‬ ‫محﯿﻂ‬ ‫در‬ ً‫دایما‬ ‫که‬ ‫داند‬‫می‬ ‫مﺴایلی‬ ‫برای‬ ‫ﺣلی‬‫دهد‬‫می‬)
‫کتاﺏ‬‫و‬ ‫ﮔاما‬‫همﮑارانﺶ‬(‫ﮔانﮕﺴتر‬ ‫ﭼﻬار‬ ‫به‬ ‫معروف‬)‫ساﻝ‬ ‫در‬1994‫نام‬ ‫با‬
Design Patterns: Elements or Reusable ObjectOriented Software‫در‬ ‫را‬ ‫ﺗاثﯿر‬ ‫بﯿشتریﻦ‬
‫ﭘﯿشرفﺖ‬Design Pattern‫ها‬‫اسﺖ‬ ‫داشته‬
‫برای‬‫ساﻝ‬ ‫در‬ ‫بار‬ ‫نﺨﺴتﯿﻦ‬1994‫آمرﻳﮑا‬ ‫ملﻮن‬ ‫کارنﮕی‬ ‫دانشﮕاه‬ ‫از‬ ‫ﮔارالن‬ ‫دﻳﻮﻳد‬ ‫و‬ ‫شاو‬ ‫ماری‬
‫مدون‬ ‫بندی‬ ‫ﻃبقه‬ ‫به‬ ‫دسﺖ‬Design Pattern‫ها‬‫زدند‬
‫اﻧواع‬ ‫بنﺪﯼ‬ ‫دﺳته‬Design Pattern‫در‬ ‫ﻫا‬GoF
23‫دسته‬ ‫سه‬ ‫در‬ ‫الگو‬:
‫ساﺧتاری‬ ‫اﻟﮕﻮهای‬(Structural)‫روا‬‫بﯿﻦ‬ ‫بﻂ‬‫ا‬‫شﯿا‬‫و‬ ‫ء‬‫مشا‬‫ر‬‫ﻛﺖ‬‫آ‬‫بر‬ ‫نﻬا‬‫اي‬‫ﺗشﻜﯿﻞ‬‫ا‬‫شﯿا‬‫ء‬
‫ﺗر‬ ‫ﭘﯿﭽﯿده‬
‫ایﺠادی‬ ‫اﻟﮕﻮهای‬(Creational)‫آنﻬا‬ ‫به‬ ‫ارجاع‬ ‫و‬ ‫اشﯿا‬ ‫ساﺧﺖ‬
‫رفتاری‬ ‫اﻟﮕﻮهای‬(Behavioral)‫ار‬‫ﺗبا‬‫ط‬‫بﯿﻦ‬‫ا‬‫شﯿا‬‫ء‬‫به‬‫و‬‫ﻳﮋ‬‫د‬ ‫از‬ ‫ه‬‫ﻳد‬‫ﮔا‬‫ه‬‫مﺴﺌﻮﻟﯿﺖ‬‫اﻟﮕﻮریتم‬ ‫و‬
Creational Structural Behavioral
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Flyweight
Façade
Proxy
Interpreter
Template Method
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor
‫اﻧواع‬Design Pattern‫ﻫا‬
Singleton Pattern
‫بر‬‫ا‬ ‫اي‬‫ینﮑه‬‫از‬‫کﻼ‬ ‫یک‬‫س‬‫فقﻂ‬‫شﺊ‬ ‫یا‬ ‫نمﻮنه‬ ‫یک‬‫ا‬‫یﺠا‬‫د‬‫شﻮ‬‫ا‬ ‫از‬ ،‫د‬‫ﻟﮕﻮ‬‫ي‬‫سﯿنﮕلتﻮ‬‫ا‬ ‫ن‬‫ستفا‬‫ده‬‫می‬
‫شﻮ‬‫د‬.
Factory Pattern
‫که‬ ‫اسﺖ‬ ‫کﻼسی‬‫نمﻮنه‬‫ها‬‫ي‬‫کﻼ‬‫س‬‫ها‬‫د‬ ‫ي‬‫یﮕر‬‫را‬‫ﺗﻮجه‬ ‫با‬‫به‬‫ﭘا‬‫را‬‫مترها‬‫ي‬‫بر‬ ‫که‬‫ار‬ ‫آن‬ ‫اي‬‫سا‬‫ﻝ‬‫می‬
‫شﻮ‬‫ا‬ ،‫د‬‫یﺠا‬‫د‬‫می‬‫نماید‬
‫فرعﻲ‬ ‫هاي‬ ‫کﻼس‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫وﻟﻲ‬ ، ‫کند‬ ‫مﻲ‬ ‫ﺗعﯿﯿﻦ‬ ‫شی‬ ‫ﻳک‬ ‫اﻳﺠاد‬ ‫جﻬﺖ‬ ‫اینترفﯿس‬ ‫ﻳک‬
‫کند‬ ‫معرفﻲ‬ ‫را‬ ‫کﻼس‬ ‫کدام‬ ‫بﮕﯿرند‬ ‫ﺗصمﯿم‬
Decorator Pattern
‫ا‬‫یﻦ‬‫ا‬‫ﻟﮕﻮ‬‫ا‬ ،‫مﮑا‬‫ا‬ ‫ن‬‫فﺰ‬‫ودن‬‫ﻗابلﯿﺖ‬‫ها‬‫ي‬‫یک‬ ‫به‬ ‫جدید‬
‫شﺊ‬‫را‬‫ﺻﻮ‬ ‫به‬‫رت‬‫ﭘﻮیا‬‫ز‬ ‫در‬ ‫و‬‫ما‬‫ا‬ ‫ن‬‫جر‬‫ا‬‫ممﮑﻦ‬
‫میسا‬‫زد‬
‫اﻟﮕﻮ‬ ‫ایﻦ‬ ‫ﺗﻮسﻂ‬‫می‬‫ﺗﻮ‬‫ا‬‫ﻗابلﯿﺖ‬ ‫یک‬ ‫نﯿم‬‫را‬‫ﺗنﻬا‬‫یک‬ ‫به‬
‫ﺧا‬ ‫شﺊ‬‫از‬ ‫ص‬‫کﻼ‬ ‫یک‬‫ا‬ ‫س‬‫ﺧتصا‬‫ص‬‫بد‬ ‫بدهﯿم‬‫آ‬ ‫ون‬‫نﮑه‬
‫سایر‬‫ا‬‫شﯿا‬‫آن‬ ‫ء‬‫کﻼ‬‫س‬‫ﺗﻐﯿﯿر‬‫کنند‬
‫ﻳک‬ ‫به‬ ‫دﻳنامﯿک‬ ‫طﻮر‬ ‫به‬ ‫را‬ ‫اضافﻲ‬ ‫هاي‬ ‫مﺴؤوﻟﯿﺖ‬
‫کند‬ ‫مﻲ‬ ‫ضمﯿمه‬ ‫شی‬.Decorator‫جاﻳﮕﺰﻳنﻲ‬ ‫ها‬
‫ﺗﻮسع‬ ‫براي‬ ‫فرعﻲ‬ ‫بندي‬ ‫طبقه‬ ‫جﻬﺖ‬ ‫ﭘذﻳر‬ ‫انعطاف‬‫ه‬
‫کنند‬ ‫مﻲ‬ ‫مﻬﯿا‬ ‫عملﮑرد‬.
Observer Pattern
‫ا‬‫یﻦ‬‫ا‬‫یک‬ ‫ﻟﮕﻮ‬‫وا‬‫بﺴتﮕی‬،‫یک‬‫بﯿﻦ‬ ‫ﭼند‬ ‫به‬‫ا‬‫شﯿا‬‫ء‬‫میباشد‬،‫شﺊ‬ ‫هنﮕامﯿﮑه‬‫ﻃر‬‫ف‬‫یک‬‫و‬ ،‫ضعﯿتﺶ‬
‫کند‬ ‫ﺗﻐﯿﯿر‬‫ا‬ ،‫شﯿا‬‫وا‬ ‫ء‬‫شﻮند‬ ‫می‬ ‫مطلﻊ‬ ‫بﺴته‬‫و‬ ‫و‬‫ﺧﻮ‬ ‫ضعﯿﺖ‬‫د‬‫شا‬‫را‬ ‫ن‬‫به‬ ‫ﺗﻮجه‬ ‫با‬‫و‬‫ﻃر‬ ‫ضعﯿﺖ‬‫ف‬‫یک‬
‫بر‬‫وزر‬‫کنند‬ ‫می‬ ‫سانی‬.
Façade Pattern
‫وﻗتی‬‫ﺗﻮسعه‬‫ﭘﯿﭽﯿدﮔﻲ‬ ‫ﺧﻮاهند‬ ‫مﻲ‬ ‫دهندﮔان‬‫یک‬‫سﯿﺴتم‬‫در‬ ‫را‬‫ﻳ‬‫یا‬ ‫ﮎ‬‫ﻛنن‬ ‫مﺨفﻲ‬ ‫ﻛﻼس‬ ‫ﭼند‬‫د‬
‫عنﻮان‬ ‫به‬ ‫افرادی‬ ‫دادن‬ ‫ﻗرار‬ ‫و‬ ‫فنی‬ ‫ﺗﯿم‬ ‫یک‬ ‫بندی‬ ‫بﺨﺶ‬ ‫مانند‬
‫مﺴﺌﻮﻝ‬‫ﺗﯿم‬ ‫ﺗمامی‬ ‫کنترﻝ‬ ‫ﭘﯿﭽﯿدﮔی‬ ‫کردن‬ ‫مﺨفی‬ ‫و‬ ‫ﺗﯿم‬‫با‬
‫استفاده‬‫مﺴﺌﻮﻝ‬ ‫از‬‫ﺗﯿم‬
‫در‬ ‫مﻮجﻮد‬ ‫هاي‬ ‫مﯿانﺠﻲ‬ ‫مﺠمﻮعه‬ ‫براي‬ ‫ﻳﮑنﻮاﺧﺖ‬ ‫اینترفﯿﺴﻲ‬
‫ﻳک‬‫کند‬ ‫مﻲ‬ ‫مﻬﯿا‬ ‫فرعﻲ‬ ‫کﻼس‬.،‫ﺧارجﻲ‬ ‫نماي‬‫اینترفﯿس‬
‫از‬ ‫استفاده‬ ‫که‬ ‫کند‬ ‫مﻲ‬ ‫ﺗعرﻳﻒ‬ ‫را‬ ‫باالﺗري‬ ‫سطح‬‫سﯿﺴتم‬
‫کند‬ ‫مﻲ‬ ‫ﺗر‬ ‫ساده‬ ‫را‬ ‫فرعﻲ‬.
Adapter Pattern
‫سا‬ ‫سازﮔار‬ ‫اﻟﮕﻮي‬‫دهنده‬ ‫وﻗﻒ‬ ، ‫ز‬
‫اینترفﯿﺴی‬‫یﮑدی‬ ‫با‬ ‫بتﻮانند‬ ‫نﯿﺴتند‬ ‫مرﺗبﻂ‬ ‫هم‬ ‫با‬ ‫که‬ ‫هایی‬ ‫کﻼس‬ ‫که‬ ‫کند‬ ‫می‬ ‫ایﺠاد‬‫کار‬ ‫ﮕر‬‫کنند‬.
‫در‬‫مبدﻝ‬ ‫واﻗﻊ‬‫اﻳنترفﯿس‬‫ﺗﻐﯿﯿر‬ ‫اي‬ ‫ﮔﻮنه‬ ‫به‬ ‫را‬ ‫ﭘرﻳﺰ‬‫می‬‫دهد‬‫نﯿاز‬ ‫شما‬ ‫ﺗاﭖ‬ ‫ﻟﭗ‬ ‫ﻛه‬ ‫اﻳنترفﯿﺴﻲ‬ ‫با‬ ‫ﻛه‬
‫باشد‬ ‫داشته‬ ‫همﺨﻮانﻲ‬ ‫دارد‬.
State Pattern
‫که‬ ‫هنﮕامﻲ‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫شی‬ ‫ﻳک‬ ‫به‬
‫را‬ ‫ﺧﻮد‬ ‫رفتار‬ ‫کرد‬ ‫ﺗﻐﯿﯿر‬ ‫آن‬ ‫درونﻲ‬ ‫ﺣاﻟﺖ‬
‫کند‬ ‫عﻮض‬.‫شی‬ ‫که‬ ‫رسد‬ ‫مﻲ‬ ‫نظر‬ ‫به‬
‫کند‬ ‫مﻲ‬ ‫عﻮض‬ ‫را‬ ‫ﺧﻮد‬ ‫کﻼس‬.
Chain of Responsibility Pattern
‫زنﺠﯿره‬ ‫اﻟﮕﻮي‬‫مﺴﺌﻮﻟﯿﺖ‬
‫دهد‬ ‫می‬ ‫ﭘاسخ‬ ‫کاربر‬ ‫درﺧﻮاسﺖ‬ ‫به‬ ‫اشﯿا‬ ‫از‬ ‫زنﺠﯿره‬ ‫یک‬ ‫ﻗاﻟﺐ‬ ‫در‬.
Template Method Pattern
‫ک‬ ‫یه‬ ‫را‬ ‫مراﺣﻞ‬ ‫بعضﻲ‬ ‫سازی‬ ‫ﭘﯿاده‬ ، ‫کرده‬ ‫ﺗعرﻳﻒ‬ ‫را‬ ‫عملﯿات‬ ‫ﻳک‬ ‫در‬ ‫اﻟﮕﻮرﻳتم‬ ‫بندي‬ ‫اسﮑلﺖ‬‫ﻼس‬
‫سپارد‬ ‫می‬ ‫فرعی‬ ‫های‬.‫ﻳک‬ ‫مراﺣﻞ‬ ‫بعضﻲ‬ ‫دهد‬ ‫مﻲ‬ ‫مﺠاﻝ‬ ‫فرعﻲ‬ ‫هاي‬ ‫کﻼس‬ ‫به‬ ‫همﭽنﯿﻦ‬
‫کند‬ ‫ﺗعرﻳﻒ‬ ‫دوباره‬ ‫اﻟﮕﻮرﻳتم‬ ‫ساﺧتار‬ ‫ﺗﻐﯿﯿر‬ ‫بدون‬ ‫را‬ ‫اﻟﮕﻮرﻳتم‬.
Strategy Pattern
‫ﺗعﻮی‬ ‫ﻗابﻞ‬ ‫را‬ ‫ها‬ ‫آن‬ ‫و‬ ‫داده‬ ‫ﻗرار‬ ‫ﭘﻮشﺶ‬ ‫در‬ ‫را‬ ‫ﻳک‬ ‫هر‬ ، ‫کرده‬ ‫ﺗعرﻳﻒ‬ ‫را‬ ‫ها‬ ‫اﻟﮕﻮرﻳتم‬ ‫از‬ ‫ﺧانﻮاده‬ ‫ﻳک‬‫ض‬
‫سازد‬ ‫مﻲ‬.‫مﻲ‬ ‫استفاد‬ ‫آن‬ ‫از‬ ‫که‬ ‫کاربران‬ ‫از‬ ‫مﺴتقﻞ‬ ‫طﻮر‬ ‫به‬ ‫اﻟﮕﻮرﻳتم‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫استراﺗﮋي‬
‫باشد‬ ‫متفاوت‬ ‫کنند‬.
Memento Pattern
‫ﺣاﻟ‬ ‫اﻳﻦ‬ ‫به‬ ‫را‬ ‫شی‬ ‫بتﻮان‬ ‫بعدا‬ ‫که‬ ‫کند‬ ‫می‬ ‫ذﺧﯿره‬ ‫دﻗﯿق‬ ‫اي‬ ‫ﮔﻮنه‬ ‫به‬ ‫را‬ ‫شی‬ ‫ﻳک‬ ‫درونﻲ‬ ‫ﺣاﻟﺖ‬‫ﺖ‬
‫بازﮔرداند‬.
Flyweight Pattern
‫باشد‬ ‫سﺨﺖ‬ ‫آنﻬا‬ ‫مدیریﺖ‬ ‫و‬ ‫باشد‬ ‫زیاد‬ ‫بﺴﯿار‬ ‫اشﯿا‬ ‫ﺗعداد‬ ‫که‬ ‫شﻮد‬ ‫می‬ ‫استفاده‬ ‫زمانی‬.
Mediator Pattern
‫د‬ ‫مﻲ‬ ‫ﻗرار‬ ‫محفظه‬ ‫یک‬ ‫در‬ ‫را‬ ‫اشﯿا‬ ‫مﺠمﻮعه‬ ‫ﻳک‬ ‫ﺗعامﻞ‬ ‫ﭼﮕﻮنﮕﻲ‬ ‫که‬ ‫کند‬ ‫مﻲ‬ ‫ﺗعﯿﯿﻦ‬ ‫را‬ ‫شﯿﺌی‬‫هد‬.
‫ﭘدیده‬ ‫و‬ ‫باشند‬ ‫داشته‬ ‫ارﺗباط‬ ‫هم‬ ‫با‬ ‫کمتر‬ ‫دو‬ ‫به‬ ‫دو‬ ‫طﻮر‬ ‫به‬ ‫اشﯿا‬ ‫که‬ ‫شﻮد‬ ‫می‬ ‫باعﺚ‬ ‫همﭽنﯿﻦ‬‫ی‬
coupling‫شﻮد‬ ‫کمتر‬.
Composite Pattern
‫کند‬ ‫مﻲ‬ ‫ﺗرکﯿﺐ‬ ‫درﺧتﻲ‬ ‫ساﺧتارهاي‬ ‫در‬ ‫را‬ ‫اشﯿا‬.Composite‫اشﯿا‬ ‫با‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫کاربران‬ ‫به‬
‫کنند‬ ‫برﺧﻮرد‬ ‫ﻳﮑﺴان‬ ‫طﻮر‬ ‫به‬ ‫ﺗرکﯿبﻲ‬ ‫اشﯿا‬ ‫و‬ ‫منفرد‬.
Iterator Pattern
‫بﯿن‬ ‫مﻲ‬ ‫ﺗدارﮎ‬ ‫متﻮاﻟﻲ‬ ‫طﻮر‬ ‫به‬ ‫ﭘﯿﻮسته‬ ‫بﻬم‬ ‫شی‬ ‫ﻳک‬ ‫عناﺻر‬ ‫به‬ ‫دسترسﻲ‬ ‫جﻬﺖ‬ ‫اي‬ ‫شﯿﻮه‬‫بدون‬ ‫د‬
‫کند‬ ‫مﺨاطره‬ ‫دﭼار‬ ‫را‬ ‫مﻮجﻮد‬ ‫نماﻳﺶ‬ ‫که‬ ‫اﻳﻦ‬.
Abstract Factory Pattern
‫کند‬ ‫می‬ ‫ﺗﻮﻟﯿد‬ ‫را‬ ‫هﺴتند‬ ‫مرﺗبﻂ‬ ‫یﮑدیﮕر‬ ‫به‬ ‫ﺧانﻮاده‬ ‫اعضای‬ ‫که‬ ‫اشﯿا‬ ‫از‬ ‫هایی‬ ‫ﺧانﻮاده‬
Bridge Pattern
‫بتﻮانند‬ ‫طرف‬ ‫دو‬ ‫که‬ ‫ایﻦ‬ ‫برای‬ ‫کﻼس‬ ‫یک‬ ‫انتﺰاعی‬ ‫ﻗﺴمﺖ‬ ‫از‬ ‫سازی‬ ‫ﭘﯿاده‬ ‫ﻗﺴمﺖ‬ ‫ساﺧتﻦ‬ ‫جدا‬‫به‬
‫کنند‬ ‫ﺗﻐﯿﯿر‬ ‫مﺴتقﻼ‬ ‫و‬ ‫راﺣتی‬.
Builder Pattern
‫مﻲ‬ ‫ساﺧﺖ‬ ‫فرآﻳند‬ ‫همان‬ ‫که‬ ‫کند‬ ‫مﻲ‬ ‫مﺠﺰا‬ ‫آن‬ ‫نماﻳﺶ‬ ‫از‬ ‫اي‬ ‫ﮔﻮنه‬ ‫به‬ ‫را‬ ‫ﭘﯿﺠﯿده‬ ‫شی‬ ‫ﻳک‬ ‫ساﺧﺖ‬
‫کند‬ ‫ایﺠاد‬ ‫متفاوﺗی‬ ‫های‬ ‫نمایﺶ‬ ‫ﺗﻮاند‬.
Command Pattern
‫یک‬ ‫که‬ ‫کند‬ ‫می‬ ‫مشﺨص‬‫عملﯿات‬(operation)‫می‬ ‫مدیریﺖ‬ ‫را‬ ‫ها‬ ‫آن‬ ‫انﺠام‬ ‫و‬ ‫شﻮد‬ ‫انﺠام‬ ‫ﭼﮕﻮنه‬
‫کند‬.
Interpreter Pattern
‫طراﺣی‬ ‫در‬ ‫ﺗنﻬا‬ ‫که‬ ‫شﻮد‬ ‫می‬ ‫استفاده‬ ‫جمﻼت‬ ‫ﺗفﺴﯿر‬ ‫و‬ ‫زبان‬ ‫یک‬ ‫ﮔرامرهای‬ ‫ﺗعریﻒ‬ ‫جﻬﺖ‬
‫دارد‬ ‫کاربرد‬ ‫کامپایلرها‬
Prototype Pattern
‫باشد‬ ‫داشته‬ ‫را‬ ‫اﺻلی‬ ‫شی‬ ‫ﺧﻮاص‬ ‫که‬ ‫جدید‬ ‫شﯿﺌی‬ ‫کردن‬ ‫کپی‬ ‫و‬ ‫ساﺧﺖ‬ ‫برای‬.
Proxy Pattern
‫ر‬ ‫آن‬ ‫به‬ ‫دسترسﻲ‬ ‫ﭼﮕﻮنﮕﻲ‬ ‫ﺗا‬ ‫کند‬ ‫مﻲ‬ ‫فراهم‬ ‫ﮔﯿرنده‬ ‫جاي‬ ‫ﻳا‬ ‫جانشﯿﻦ‬ ‫ﻳک‬ ‫دﻳﮕر‬ ‫شی‬ ‫براي‬‫ا‬
‫کند‬ ‫کنترﻝ‬.
Visitor Pattern
‫کا‬ ‫آن‬ ‫در‬ ‫که‬ ‫عناﺻري‬ ‫هاي‬ ‫کﻼس‬ ‫ﺗﻐﯿﯿر‬ ‫بدون‬ ‫را‬ ‫جدﻳد‬ ‫عملﯿات‬ ‫دهد‬ ‫مﻲ‬ ‫مﺠاﻝ‬ ‫شما‬ ‫به‬ ‫وﻳﺰﻳتﻮر‬‫ر‬
‫دهﯿد‬ ‫ﺗﻐﯿﯿر‬ ‫کند‬ ‫مﻲ‬.
Framework‫یک‬‫ﭘﯿا‬‫ده‬‫سا‬‫زی‬
‫وا‬‫ﻗعی‬‫از‬‫یک‬‫ﮔر‬ ‫یا‬‫و‬‫هی‬‫از‬‫ا‬‫ﻟﮕﻮها‬‫ی‬
‫ﻃر‬‫ا‬‫ﺣی‬‫ا‬‫سﺖ‬
“
”‫از‬ ‫اﺳتﻔاده‬ ‫به‬ ‫ﻣﺠبور‬ ‫را‬ ‫ﺧود‬Design
Pattern‫آ‬ ‫به‬ ‫که‬ ‫زﻣاﻧی‬ ‫تنﻬا‬ ‫ﻭ‬ ‫ﻧکنیﺪ‬ ‫ﻫا‬‫ﻧﻬا‬
‫برﻭیﺪ‬ ‫آﻧﻬا‬ ‫ﺳراغ‬ ‫به‬ ‫داریﺪ‬ ‫ﻧیاز‬.
‫آﺧر‬ ‫سﺨﻦ‬
‫ﻣنابع‬
Thedeveloper.ir
itpro.ir
sourcemaking.com
Introduction to design pattern

More Related Content

Viewers also liked

Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...
Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...
Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...Michele Borsoi
 
Ssc main conventional paper 2014 electricalcivil
Ssc main conventional paper 2014 electricalcivilSsc main conventional paper 2014 electricalcivil
Ssc main conventional paper 2014 electricalcivilDeepak Kumar
 
Facultad de-educación-y-humanidades (2)
Facultad de-educación-y-humanidades (2)Facultad de-educación-y-humanidades (2)
Facultad de-educación-y-humanidades (2)Iandra Castillo
 
Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...
Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...
Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...Michele Borsoi
 
Make heritage fun!
Make heritage fun!Make heritage fun!
Make heritage fun!GoUNESCO
 
Controller in asp.net mvc
Controller in asp.net mvcController in asp.net mvc
Controller in asp.net mvcReza Rahimy
 

Viewers also liked (6)

Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...
Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...
Dottori Commercialisti - Guida alla conoscenza della polizza di responsabilit...
 
Ssc main conventional paper 2014 electricalcivil
Ssc main conventional paper 2014 electricalcivilSsc main conventional paper 2014 electricalcivil
Ssc main conventional paper 2014 electricalcivil
 
Facultad de-educación-y-humanidades (2)
Facultad de-educación-y-humanidades (2)Facultad de-educación-y-humanidades (2)
Facultad de-educación-y-humanidades (2)
 
Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...
Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...
Guidaallaconoscenzadellapolizzadiresponsabilitcivile 141122091752-conversion-...
 
Make heritage fun!
Make heritage fun!Make heritage fun!
Make heritage fun!
 
Controller in asp.net mvc
Controller in asp.net mvcController in asp.net mvc
Controller in asp.net mvc
 

Similar to Introduction to design pattern

Erp roya bajelan_v2
Erp roya bajelan_v2Erp roya bajelan_v2
Erp roya bajelan_v2roya bajelan
 
Scalable javascript application - طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپت
Scalable javascript application -  طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپتScalable javascript application -  طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپت
Scalable javascript application - طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپتefazati
 
Repository pattern
Repository patternRepository pattern
Repository patternMahdi Fa
 
Cloud Computing7
Cloud Computing7Cloud Computing7
Cloud Computing7amiriano
 
الگوهای طراحی فرایند - workflow pattern
الگوهای طراحی فرایند - workflow patternالگوهای طراحی فرایند - workflow pattern
الگوهای طراحی فرایند - workflow patternDepna - دپنا
 
cloud computing , رایانش ابری
cloud computing , رایانش ابریcloud computing , رایانش ابری
cloud computing , رایانش ابریvhd-abdarbashi
 
طراحی تجربه کاربری چیست؟
طراحی تجربه کاربری چیست؟طراحی تجربه کاربری چیست؟
طراحی تجربه کاربری چیست؟Vahid Abolhassani Nejad
 
مقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاریمقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاریZahra Mansoori
 
استاندارد های استفاده شده در طراحی سایت
استاندارد های استفاده شده در طراحی سایتاستاندارد های استفاده شده در طراحی سایت
استاندارد های استفاده شده در طراحی سایتگروه زوم تک
 
آموزش پردازش تصویر با OpenCV - بخش دوم
آموزش پردازش تصویر با OpenCV - بخش دومآموزش پردازش تصویر با OpenCV - بخش دوم
آموزش پردازش تصویر با OpenCV - بخش دومfaradars
 
ده گام برای طراحی رابط کاربری مینیمال / وحید ناموری
ده گام برای طراحی رابط کاربری مینیمال / وحید ناموریده گام برای طراحی رابط کاربری مینیمال / وحید ناموری
ده گام برای طراحی رابط کاربری مینیمال / وحید ناموریGap Graphic
 

Similar to Introduction to design pattern (20)

vb.net
vb.netvb.net
vb.net
 
Erp roya bajelan_v2
Erp roya bajelan_v2Erp roya bajelan_v2
Erp roya bajelan_v2
 
Scalable javascript application - طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپت
Scalable javascript application -  طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپتScalable javascript application -  طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپت
Scalable javascript application - طراحی نرم افزارهای مقیاس پذیر با جاوا اسکریپت
 
lunch box plugin
 lunch box plugin  lunch box plugin
lunch box plugin
 
مدل رانده
مدل راندهمدل رانده
مدل رانده
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
Object-Oriented-Programming-in-Python
Object-Oriented-Programming-in-PythonObject-Oriented-Programming-in-Python
Object-Oriented-Programming-in-Python
 
Verilog
VerilogVerilog
Verilog
 
Kotlin
KotlinKotlin
Kotlin
 
Cloud Computing7
Cloud Computing7Cloud Computing7
Cloud Computing7
 
الگوهای طراحی فرایند - workflow pattern
الگوهای طراحی فرایند - workflow patternالگوهای طراحی فرایند - workflow pattern
الگوهای طراحی فرایند - workflow pattern
 
Sql tuning
Sql tuningSql tuning
Sql tuning
 
ABOUT INDUSTRY 4.0
ABOUT INDUSTRY 4.0ABOUT INDUSTRY 4.0
ABOUT INDUSTRY 4.0
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
cloud computing , رایانش ابری
cloud computing , رایانش ابریcloud computing , رایانش ابری
cloud computing , رایانش ابری
 
طراحی تجربه کاربری چیست؟
طراحی تجربه کاربری چیست؟طراحی تجربه کاربری چیست؟
طراحی تجربه کاربری چیست؟
 
مقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاریمقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاری
 
استاندارد های استفاده شده در طراحی سایت
استاندارد های استفاده شده در طراحی سایتاستاندارد های استفاده شده در طراحی سایت
استاندارد های استفاده شده در طراحی سایت
 
آموزش پردازش تصویر با OpenCV - بخش دوم
آموزش پردازش تصویر با OpenCV - بخش دومآموزش پردازش تصویر با OpenCV - بخش دوم
آموزش پردازش تصویر با OpenCV - بخش دوم
 
ده گام برای طراحی رابط کاربری مینیمال / وحید ناموری
ده گام برای طراحی رابط کاربری مینیمال / وحید ناموریده گام برای طراحی رابط کاربری مینیمال / وحید ناموری
ده گام برای طراحی رابط کاربری مینیمال / وحید ناموری
 

Introduction to design pattern

  • 2. Reza Rahimi 14 Years Experience Programing With : C, C++, Asembly, Delphi , Cbuilder, PHP, ASP.NET webform and MVC, Angular2 Other : SEO , SharePoint , Security in web application, web master Website: rtwo.ir Email : jobfa.com@gmail.com
  • 4. ‫کنیم‬ ‫بحث‬ ‫ﻗراره‬ ‫چی‬ ‫ا‬‫ﭼﯿﺴﺖ‬ ‫ﻟﮕﻮ‬‫؟‬ ‫از‬ ‫باید‬ ‫ﭼرا‬Design Pattern‫کنﯿم‬ ‫استفاده‬ ‫ها‬‫؟‬ ‫ﭼه‬‫از‬ ‫باید‬ ‫زمانی‬Design Pattern‫کنﯿم؟‬ ‫استفاده‬ ‫ها‬ ‫ﺗا‬‫ر‬‫یﺨﭽه‬‫ا‬‫ﻟﮕﻮها‬‫ي‬‫ﻃر‬‫ا‬‫ﺣی‬ ‫ا‬‫ستاند‬‫ارد‬‫ا‬‫ﻟﮕﻮ‬‫ها‬ ‫د‬‫بند‬ ‫سته‬‫ي‬‫ا‬‫ﻟﮕﻮها‬ ‫مﺰ‬‫ا‬‫یا‬‫ي‬‫ا‬‫ﻟﮕﻮها‬‫ي‬‫ﻃر‬‫ا‬‫ﺣی‬ ‫معرفی‬‫اﻟﮕﻮها‬ ‫منابﻊ‬
  • 5. Pattern‫چیسﺖ‬ ‫الگو‬ ‫یا‬ Pattern‫ا‬ ‫یا‬‫ﻟﮕﻮ‬‫ﺗﻮﺻﯿفی‬‫از‬‫مﺴاﻟه‬‫ا‬ ‫و‬‫سا‬‫راه‬ ‫س‬‫ﺣﻞ‬‫آن‬‫ا‬‫سﺖ‬،‫ﻃﻮ‬ ‫به‬‫ري‬‫که‬‫ا‬‫یﻦ‬‫راه‬‫می‬ ‫ﺣﻞ‬ ‫ﺗﻮ‬‫ا‬‫ها‬ ‫شﮑﻞ‬ ‫به‬ ‫ند‬‫ي‬‫مﻮ‬ ‫مﺨتلفی‬‫ا‬ ‫رد‬‫ستفا‬‫ده‬‫ﻗر‬‫ار‬‫ﮔﯿر‬‫د‬.
  • 6. Framework‫؟‬ ‫چیسﺖ‬(‫از‬‫د‬‫یﺪﮔا‬‫شی‬ ‫ه‬‫ﮔر‬‫ایی‬) ‫یک‬Framework‫از‬ ‫عبارﺗﺴﺖ‬‫مﺠمﻮعه‬‫از‬ ‫اي‬‫کﻼ‬‫س‬‫ﺗرکﯿﺐ‬ ‫با‬ ‫که‬ ‫هایی‬‫و‬‫کا‬‫در‬ ‫ر‬‫کنا‬‫ر‬‫هم‬،‫یک‬ ‫ﻃر‬‫ا‬‫ﻗابلﯿﺖ‬ ‫با‬ ‫ﺣی‬‫ا‬‫ستفا‬‫ده‬‫مﺠد‬‫د‬‫بر‬‫اي‬‫یک‬‫کﻼ‬‫س‬‫ﺧا‬‫ص‬‫از‬‫نر‬‫ا‬ ‫م‬‫فﺰ‬‫ا‬ ‫ار‬‫یﺠا‬‫د‬‫می‬‫کنند‬.
  • 7. ‫ﻭ‬ ‫ﻗﺪیمی‬ ‫رﻭشﻬاﯼ‬‫کﻼﺳیﮏ‬‫ﻧیازﻫاﯼ‬ ‫ﺟوابگوﯼ‬ ‫ﻧرﻡ‬ ‫بازار‬ ‫رﻭز‬‫اﻓﺰار‬‫ﻧبود‬ ‫اﻓﺰارﻫا‬ ‫ﻧرﻡ‬ ‫پیچیﺪﮔی‬ ‫ﻭ‬ ‫ﺳایﺰ‬ ‫رشﺪ‬ ‫با‬
  • 8. “ ”‫ﻣشک‬ ‫به‬ ‫شﺪه‬ ‫ثابﺖ‬ ‫ﻫاﯼ‬ ‫ﺟواب‬ ‫یکسرﯼ‬‫ﻼت‬ ‫ﻫستنﺪ‬ ‫طراحی‬ ‫در‬ ‫رایج‬ Design Pattern‫ﭼﯿﺴﺖ‬‫؟‬
  • 9. “ ”‫ا‬‫لگوﻫا‬‫ﻭ‬‫ز‬‫با‬‫ا‬ ‫ن‬‫لگوﻫا‬‫رﻭ‬‫شی‬‫بر‬‫اﯼ‬‫توﺻیﻒ‬ ‫بﻬتریﻦ‬‫ﻫاﯼ‬ ‫،طراحی‬ ‫عمل‬‫ﺧو‬‫ب‬‫ا‬ ‫ﻭ‬‫ﻧتﻘا‬‫ل‬ ‫تﺠربه‬‫ا‬‫ﺳﺖ‬ Design Pattern‫؟‬ ‫ﭼﯿﺴﺖ‬
  • 10. “ ”‫ﻣست‬ ‫بتوان‬ ‫که‬ ‫ﻧیستنﺪ‬ ‫اﯼ‬ ‫آﻣاده‬ ‫کﺪﻫاﯼ‬‫از‬ ً‫ا‬‫ﻘیم‬ ‫کرد‬ ‫اﺳتﻔاده‬ ‫ﻫا‬ ‫آن‬.‫اﻣا‬‫ﺳرﯼ‬ ‫یﮏ‬‫ی‬ ‫رﻭیکرد‬‫ا‬ ‫عادﯼ‬ ‫ﻫاﯼ‬ ‫چالش‬ ‫حل‬ ‫براﯼ‬ ‫ﻧظریه‬ ‫طراحی‬‫دﻫنﺪ‬ ‫ﻣی‬ ‫ارائه‬ Design Pattern‫؟‬ ‫ﭼﯿﺴﺖ‬
  • 13. “ ” ‫عملﯿات‬‫با‬ ‫و‬ ‫مقرر‬ ‫زمان‬ ‫در‬ ‫ﺗﻮسعه‬ ‫برسد‬ ‫انﺠام‬ ‫به‬ ‫باالﺗری‬ ‫کﯿفﯿﺖ‬ ‫اﻟﮕﻮها‬ ‫از‬ ‫استفاده‬ ‫مﺰایای‬
  • 14. ‫از‬ ‫بایﺪ‬ ‫زﻣاﻧی‬ ‫چه‬Design Pattern‫کنیم؟‬ ‫اﺳتﻔاده‬ ‫ﻫا‬ ‫می‬ ‫ارائه‬ ‫آن‬ ‫برای‬ ‫استاندارد‬ ‫ﺣﻞ‬ ‫راه‬ ‫یک‬ ‫و‬ ‫مﯿﮑند‬ ‫ﺻحبﺖ‬ ‫طراﺣی‬ ‫مشﮑﻞ‬ ‫یک‬ ‫درباره‬ ‫اﻟﮕﻮ‬ ‫هر‬ ‫دهد‬.‫ﺻرف‬ ‫طراﺣی‬ ‫مﺴائﻞ‬ ‫ﺗحلﯿﻞ‬ ‫و‬ ‫ﺗﺠﺰیه‬ ‫برای‬ ‫وﻗﺖ‬ ‫کمی‬ ‫آنﻬا‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫ﻗبﻞ‬ ‫بنابرایﻦ‬‫کنﯿد‬ ‫دهﯿد‬ ‫ﺗطبﯿق‬ ‫اﻟﮕﻮ‬ ‫های‬ ‫ﺗﻮﺻﯿﻒ‬ ‫با‬ ‫را‬ ‫آن‬ ‫کنﯿد‬ ‫سعی‬ ‫و‬.
  • 15. ‫بایﺪ‬ ‫چرا‬Design Pattern‫را‬ ‫ها‬‫شناﺧﺖ‬ ‫آشناﻳی‬‫افﺰار‬ ‫نرم‬ ‫ﻃراﺣی‬ ‫کلﻲ‬ ‫های‬ ‫مدﻝ‬ ‫با‬‫اسا‬ ‫نقﺶ‬‫سی‬‫در‬،‫درﮎ‬‫اجﺰای‬ ‫مﯿان‬ ‫کلی‬ ‫روابﻂ‬ ‫بﻬبﻮد‬ ‫مدﻝ‬ ‫ﻗاﻟﺐ‬ ‫در‬ ‫را‬ ‫جدﻳد‬ ‫سﯿﺴتم‬ ‫که‬ ‫سازد‬ ‫مﻲ‬ ‫ﻗادر‬ ‫را‬ ‫ﻃراﺡ‬ ‫و‬ ‫کند‬ ‫مﻲ‬ ‫بازی‬ ‫افﺰار‬ ‫نرم‬ ‫نﻬاﻳﻲ‬ ‫های‬ ‫هﺰﻳنه‬ ‫کاهﺶ‬ ‫باعﺚ‬ ‫ﺗﻮاند‬ ‫می‬ ‫ﺧﻮد‬ ‫اﻳﻦ‬ ‫که‬ ‫نماﻳد‬ ‫اﻳﺠاد‬ ‫ﭘﯿشﯿﻦ‬ ‫سﯿﺴتم‬ ‫ﻳافته‬ ‫افﺰار‬ ‫نرم‬ ‫ﺗﻮﻟﯿد‬‫شﻮد‬ ‫ساز‬ ‫زمﯿنه‬ ‫افﺰار‬ ‫نرم‬ ‫ﻳک‬ ‫برای‬ ‫معماری‬ ‫مناسﺐ‬ ‫مدﻝ‬ ‫انتﺨاﺏ‬‫در‬ ‫بﻮد‬ ‫ﺧﻮاهد‬ ‫آن‬ ‫مﻮفقﯿﺖ‬‫ﺣ‬‫اﻟی‬ ‫که‬‫می‬ ‫ﻏلﻂ‬ ‫مدﻝ‬ ‫انتﺨاﺏ‬‫ﺗﻮاند‬‫بﯿاورد‬ ‫بار‬ ‫به‬ ‫فاجعه‬ ‫شناﺧﺖ‬‫هر‬ ‫جﺰئﯿات‬‫ﻳک‬،‫معماری‬ ‫های‬ ‫سبک‬ ‫از‬‫به‬‫از‬ ‫بﻬتر‬ ‫ﻃراﺣی‬ ‫انتﺨاﺏ‬ ‫در‬ ‫سﯿﺴتم‬ ‫معمار‬ ‫کمک‬ ‫مﻮجﻮد‬ ‫های‬ ‫ﮔﺰﻳنه‬ ‫مﯿان‬‫مﻲ‬‫کند‬. ‫واژ‬ ‫به‬ ‫نﯿاز‬‫ﮔا‬‫ن‬‫مشتر‬‫داریم‬ ‫ﮎ‬
  • 16. ‫تاریخچه‬ ‫اﻟﮕﻮها‬‫ﺗﻮسﻂ‬ ‫ابتدا‬‫اﻟﮑﺴاندر‬ ‫کریﺴتﻮف‬‫شد‬ ‫ارایه‬(‫کریﺴتﻮف‬‫طراﺣی‬ ‫اﻟﮕﻮی‬ ‫اﻟﮑﺴاندر‬‫راه‬ ‫را‬ ‫رخ‬ ‫اطراف‬ ‫محﯿﻂ‬ ‫در‬ ً‫دایما‬ ‫که‬ ‫داند‬‫می‬ ‫مﺴایلی‬ ‫برای‬ ‫ﺣلی‬‫دهد‬‫می‬) ‫کتاﺏ‬‫و‬ ‫ﮔاما‬‫همﮑارانﺶ‬(‫ﮔانﮕﺴتر‬ ‫ﭼﻬار‬ ‫به‬ ‫معروف‬)‫ساﻝ‬ ‫در‬1994‫نام‬ ‫با‬ Design Patterns: Elements or Reusable ObjectOriented Software‫در‬ ‫را‬ ‫ﺗاثﯿر‬ ‫بﯿشتریﻦ‬ ‫ﭘﯿشرفﺖ‬Design Pattern‫ها‬‫اسﺖ‬ ‫داشته‬ ‫برای‬‫ساﻝ‬ ‫در‬ ‫بار‬ ‫نﺨﺴتﯿﻦ‬1994‫آمرﻳﮑا‬ ‫ملﻮن‬ ‫کارنﮕی‬ ‫دانشﮕاه‬ ‫از‬ ‫ﮔارالن‬ ‫دﻳﻮﻳد‬ ‫و‬ ‫شاو‬ ‫ماری‬ ‫مدون‬ ‫بندی‬ ‫ﻃبقه‬ ‫به‬ ‫دسﺖ‬Design Pattern‫ها‬‫زدند‬
  • 17. ‫اﻧواع‬ ‫بنﺪﯼ‬ ‫دﺳته‬Design Pattern‫در‬ ‫ﻫا‬GoF 23‫دسته‬ ‫سه‬ ‫در‬ ‫الگو‬: ‫ساﺧتاری‬ ‫اﻟﮕﻮهای‬(Structural)‫روا‬‫بﯿﻦ‬ ‫بﻂ‬‫ا‬‫شﯿا‬‫و‬ ‫ء‬‫مشا‬‫ر‬‫ﻛﺖ‬‫آ‬‫بر‬ ‫نﻬا‬‫اي‬‫ﺗشﻜﯿﻞ‬‫ا‬‫شﯿا‬‫ء‬ ‫ﺗر‬ ‫ﭘﯿﭽﯿده‬ ‫ایﺠادی‬ ‫اﻟﮕﻮهای‬(Creational)‫آنﻬا‬ ‫به‬ ‫ارجاع‬ ‫و‬ ‫اشﯿا‬ ‫ساﺧﺖ‬ ‫رفتاری‬ ‫اﻟﮕﻮهای‬(Behavioral)‫ار‬‫ﺗبا‬‫ط‬‫بﯿﻦ‬‫ا‬‫شﯿا‬‫ء‬‫به‬‫و‬‫ﻳﮋ‬‫د‬ ‫از‬ ‫ه‬‫ﻳد‬‫ﮔا‬‫ه‬‫مﺴﺌﻮﻟﯿﺖ‬‫اﻟﮕﻮریتم‬ ‫و‬
  • 18. Creational Structural Behavioral Factory Method Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Flyweight Façade Proxy Interpreter Template Method Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor ‫اﻧواع‬Design Pattern‫ﻫا‬
  • 19. Singleton Pattern ‫بر‬‫ا‬ ‫اي‬‫ینﮑه‬‫از‬‫کﻼ‬ ‫یک‬‫س‬‫فقﻂ‬‫شﺊ‬ ‫یا‬ ‫نمﻮنه‬ ‫یک‬‫ا‬‫یﺠا‬‫د‬‫شﻮ‬‫ا‬ ‫از‬ ،‫د‬‫ﻟﮕﻮ‬‫ي‬‫سﯿنﮕلتﻮ‬‫ا‬ ‫ن‬‫ستفا‬‫ده‬‫می‬ ‫شﻮ‬‫د‬.
  • 20. Factory Pattern ‫که‬ ‫اسﺖ‬ ‫کﻼسی‬‫نمﻮنه‬‫ها‬‫ي‬‫کﻼ‬‫س‬‫ها‬‫د‬ ‫ي‬‫یﮕر‬‫را‬‫ﺗﻮجه‬ ‫با‬‫به‬‫ﭘا‬‫را‬‫مترها‬‫ي‬‫بر‬ ‫که‬‫ار‬ ‫آن‬ ‫اي‬‫سا‬‫ﻝ‬‫می‬ ‫شﻮ‬‫ا‬ ،‫د‬‫یﺠا‬‫د‬‫می‬‫نماید‬ ‫فرعﻲ‬ ‫هاي‬ ‫کﻼس‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫وﻟﻲ‬ ، ‫کند‬ ‫مﻲ‬ ‫ﺗعﯿﯿﻦ‬ ‫شی‬ ‫ﻳک‬ ‫اﻳﺠاد‬ ‫جﻬﺖ‬ ‫اینترفﯿس‬ ‫ﻳک‬ ‫کند‬ ‫معرفﻲ‬ ‫را‬ ‫کﻼس‬ ‫کدام‬ ‫بﮕﯿرند‬ ‫ﺗصمﯿم‬
  • 21. Decorator Pattern ‫ا‬‫یﻦ‬‫ا‬‫ﻟﮕﻮ‬‫ا‬ ،‫مﮑا‬‫ا‬ ‫ن‬‫فﺰ‬‫ودن‬‫ﻗابلﯿﺖ‬‫ها‬‫ي‬‫یک‬ ‫به‬ ‫جدید‬ ‫شﺊ‬‫را‬‫ﺻﻮ‬ ‫به‬‫رت‬‫ﭘﻮیا‬‫ز‬ ‫در‬ ‫و‬‫ما‬‫ا‬ ‫ن‬‫جر‬‫ا‬‫ممﮑﻦ‬ ‫میسا‬‫زد‬ ‫اﻟﮕﻮ‬ ‫ایﻦ‬ ‫ﺗﻮسﻂ‬‫می‬‫ﺗﻮ‬‫ا‬‫ﻗابلﯿﺖ‬ ‫یک‬ ‫نﯿم‬‫را‬‫ﺗنﻬا‬‫یک‬ ‫به‬ ‫ﺧا‬ ‫شﺊ‬‫از‬ ‫ص‬‫کﻼ‬ ‫یک‬‫ا‬ ‫س‬‫ﺧتصا‬‫ص‬‫بد‬ ‫بدهﯿم‬‫آ‬ ‫ون‬‫نﮑه‬ ‫سایر‬‫ا‬‫شﯿا‬‫آن‬ ‫ء‬‫کﻼ‬‫س‬‫ﺗﻐﯿﯿر‬‫کنند‬ ‫ﻳک‬ ‫به‬ ‫دﻳنامﯿک‬ ‫طﻮر‬ ‫به‬ ‫را‬ ‫اضافﻲ‬ ‫هاي‬ ‫مﺴؤوﻟﯿﺖ‬ ‫کند‬ ‫مﻲ‬ ‫ضمﯿمه‬ ‫شی‬.Decorator‫جاﻳﮕﺰﻳنﻲ‬ ‫ها‬ ‫ﺗﻮسع‬ ‫براي‬ ‫فرعﻲ‬ ‫بندي‬ ‫طبقه‬ ‫جﻬﺖ‬ ‫ﭘذﻳر‬ ‫انعطاف‬‫ه‬ ‫کنند‬ ‫مﻲ‬ ‫مﻬﯿا‬ ‫عملﮑرد‬.
  • 22. Observer Pattern ‫ا‬‫یﻦ‬‫ا‬‫یک‬ ‫ﻟﮕﻮ‬‫وا‬‫بﺴتﮕی‬،‫یک‬‫بﯿﻦ‬ ‫ﭼند‬ ‫به‬‫ا‬‫شﯿا‬‫ء‬‫میباشد‬،‫شﺊ‬ ‫هنﮕامﯿﮑه‬‫ﻃر‬‫ف‬‫یک‬‫و‬ ،‫ضعﯿتﺶ‬ ‫کند‬ ‫ﺗﻐﯿﯿر‬‫ا‬ ،‫شﯿا‬‫وا‬ ‫ء‬‫شﻮند‬ ‫می‬ ‫مطلﻊ‬ ‫بﺴته‬‫و‬ ‫و‬‫ﺧﻮ‬ ‫ضعﯿﺖ‬‫د‬‫شا‬‫را‬ ‫ن‬‫به‬ ‫ﺗﻮجه‬ ‫با‬‫و‬‫ﻃر‬ ‫ضعﯿﺖ‬‫ف‬‫یک‬ ‫بر‬‫وزر‬‫کنند‬ ‫می‬ ‫سانی‬.
  • 23. Façade Pattern ‫وﻗتی‬‫ﺗﻮسعه‬‫ﭘﯿﭽﯿدﮔﻲ‬ ‫ﺧﻮاهند‬ ‫مﻲ‬ ‫دهندﮔان‬‫یک‬‫سﯿﺴتم‬‫در‬ ‫را‬‫ﻳ‬‫یا‬ ‫ﮎ‬‫ﻛنن‬ ‫مﺨفﻲ‬ ‫ﻛﻼس‬ ‫ﭼند‬‫د‬ ‫عنﻮان‬ ‫به‬ ‫افرادی‬ ‫دادن‬ ‫ﻗرار‬ ‫و‬ ‫فنی‬ ‫ﺗﯿم‬ ‫یک‬ ‫بندی‬ ‫بﺨﺶ‬ ‫مانند‬ ‫مﺴﺌﻮﻝ‬‫ﺗﯿم‬ ‫ﺗمامی‬ ‫کنترﻝ‬ ‫ﭘﯿﭽﯿدﮔی‬ ‫کردن‬ ‫مﺨفی‬ ‫و‬ ‫ﺗﯿم‬‫با‬ ‫استفاده‬‫مﺴﺌﻮﻝ‬ ‫از‬‫ﺗﯿم‬ ‫در‬ ‫مﻮجﻮد‬ ‫هاي‬ ‫مﯿانﺠﻲ‬ ‫مﺠمﻮعه‬ ‫براي‬ ‫ﻳﮑنﻮاﺧﺖ‬ ‫اینترفﯿﺴﻲ‬ ‫ﻳک‬‫کند‬ ‫مﻲ‬ ‫مﻬﯿا‬ ‫فرعﻲ‬ ‫کﻼس‬.،‫ﺧارجﻲ‬ ‫نماي‬‫اینترفﯿس‬ ‫از‬ ‫استفاده‬ ‫که‬ ‫کند‬ ‫مﻲ‬ ‫ﺗعرﻳﻒ‬ ‫را‬ ‫باالﺗري‬ ‫سطح‬‫سﯿﺴتم‬ ‫کند‬ ‫مﻲ‬ ‫ﺗر‬ ‫ساده‬ ‫را‬ ‫فرعﻲ‬.
  • 24. Adapter Pattern ‫سا‬ ‫سازﮔار‬ ‫اﻟﮕﻮي‬‫دهنده‬ ‫وﻗﻒ‬ ، ‫ز‬ ‫اینترفﯿﺴی‬‫یﮑدی‬ ‫با‬ ‫بتﻮانند‬ ‫نﯿﺴتند‬ ‫مرﺗبﻂ‬ ‫هم‬ ‫با‬ ‫که‬ ‫هایی‬ ‫کﻼس‬ ‫که‬ ‫کند‬ ‫می‬ ‫ایﺠاد‬‫کار‬ ‫ﮕر‬‫کنند‬. ‫در‬‫مبدﻝ‬ ‫واﻗﻊ‬‫اﻳنترفﯿس‬‫ﺗﻐﯿﯿر‬ ‫اي‬ ‫ﮔﻮنه‬ ‫به‬ ‫را‬ ‫ﭘرﻳﺰ‬‫می‬‫دهد‬‫نﯿاز‬ ‫شما‬ ‫ﺗاﭖ‬ ‫ﻟﭗ‬ ‫ﻛه‬ ‫اﻳنترفﯿﺴﻲ‬ ‫با‬ ‫ﻛه‬ ‫باشد‬ ‫داشته‬ ‫همﺨﻮانﻲ‬ ‫دارد‬.
  • 25. State Pattern ‫که‬ ‫هنﮕامﻲ‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫شی‬ ‫ﻳک‬ ‫به‬ ‫را‬ ‫ﺧﻮد‬ ‫رفتار‬ ‫کرد‬ ‫ﺗﻐﯿﯿر‬ ‫آن‬ ‫درونﻲ‬ ‫ﺣاﻟﺖ‬ ‫کند‬ ‫عﻮض‬.‫شی‬ ‫که‬ ‫رسد‬ ‫مﻲ‬ ‫نظر‬ ‫به‬ ‫کند‬ ‫مﻲ‬ ‫عﻮض‬ ‫را‬ ‫ﺧﻮد‬ ‫کﻼس‬.
  • 26. Chain of Responsibility Pattern ‫زنﺠﯿره‬ ‫اﻟﮕﻮي‬‫مﺴﺌﻮﻟﯿﺖ‬ ‫دهد‬ ‫می‬ ‫ﭘاسخ‬ ‫کاربر‬ ‫درﺧﻮاسﺖ‬ ‫به‬ ‫اشﯿا‬ ‫از‬ ‫زنﺠﯿره‬ ‫یک‬ ‫ﻗاﻟﺐ‬ ‫در‬.
  • 27. Template Method Pattern ‫ک‬ ‫یه‬ ‫را‬ ‫مراﺣﻞ‬ ‫بعضﻲ‬ ‫سازی‬ ‫ﭘﯿاده‬ ، ‫کرده‬ ‫ﺗعرﻳﻒ‬ ‫را‬ ‫عملﯿات‬ ‫ﻳک‬ ‫در‬ ‫اﻟﮕﻮرﻳتم‬ ‫بندي‬ ‫اسﮑلﺖ‬‫ﻼس‬ ‫سپارد‬ ‫می‬ ‫فرعی‬ ‫های‬.‫ﻳک‬ ‫مراﺣﻞ‬ ‫بعضﻲ‬ ‫دهد‬ ‫مﻲ‬ ‫مﺠاﻝ‬ ‫فرعﻲ‬ ‫هاي‬ ‫کﻼس‬ ‫به‬ ‫همﭽنﯿﻦ‬ ‫کند‬ ‫ﺗعرﻳﻒ‬ ‫دوباره‬ ‫اﻟﮕﻮرﻳتم‬ ‫ساﺧتار‬ ‫ﺗﻐﯿﯿر‬ ‫بدون‬ ‫را‬ ‫اﻟﮕﻮرﻳتم‬.
  • 28. Strategy Pattern ‫ﺗعﻮی‬ ‫ﻗابﻞ‬ ‫را‬ ‫ها‬ ‫آن‬ ‫و‬ ‫داده‬ ‫ﻗرار‬ ‫ﭘﻮشﺶ‬ ‫در‬ ‫را‬ ‫ﻳک‬ ‫هر‬ ، ‫کرده‬ ‫ﺗعرﻳﻒ‬ ‫را‬ ‫ها‬ ‫اﻟﮕﻮرﻳتم‬ ‫از‬ ‫ﺧانﻮاده‬ ‫ﻳک‬‫ض‬ ‫سازد‬ ‫مﻲ‬.‫مﻲ‬ ‫استفاد‬ ‫آن‬ ‫از‬ ‫که‬ ‫کاربران‬ ‫از‬ ‫مﺴتقﻞ‬ ‫طﻮر‬ ‫به‬ ‫اﻟﮕﻮرﻳتم‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫استراﺗﮋي‬ ‫باشد‬ ‫متفاوت‬ ‫کنند‬.
  • 29. Memento Pattern ‫ﺣاﻟ‬ ‫اﻳﻦ‬ ‫به‬ ‫را‬ ‫شی‬ ‫بتﻮان‬ ‫بعدا‬ ‫که‬ ‫کند‬ ‫می‬ ‫ذﺧﯿره‬ ‫دﻗﯿق‬ ‫اي‬ ‫ﮔﻮنه‬ ‫به‬ ‫را‬ ‫شی‬ ‫ﻳک‬ ‫درونﻲ‬ ‫ﺣاﻟﺖ‬‫ﺖ‬ ‫بازﮔرداند‬.
  • 30. Flyweight Pattern ‫باشد‬ ‫سﺨﺖ‬ ‫آنﻬا‬ ‫مدیریﺖ‬ ‫و‬ ‫باشد‬ ‫زیاد‬ ‫بﺴﯿار‬ ‫اشﯿا‬ ‫ﺗعداد‬ ‫که‬ ‫شﻮد‬ ‫می‬ ‫استفاده‬ ‫زمانی‬.
  • 31. Mediator Pattern ‫د‬ ‫مﻲ‬ ‫ﻗرار‬ ‫محفظه‬ ‫یک‬ ‫در‬ ‫را‬ ‫اشﯿا‬ ‫مﺠمﻮعه‬ ‫ﻳک‬ ‫ﺗعامﻞ‬ ‫ﭼﮕﻮنﮕﻲ‬ ‫که‬ ‫کند‬ ‫مﻲ‬ ‫ﺗعﯿﯿﻦ‬ ‫را‬ ‫شﯿﺌی‬‫هد‬. ‫ﭘدیده‬ ‫و‬ ‫باشند‬ ‫داشته‬ ‫ارﺗباط‬ ‫هم‬ ‫با‬ ‫کمتر‬ ‫دو‬ ‫به‬ ‫دو‬ ‫طﻮر‬ ‫به‬ ‫اشﯿا‬ ‫که‬ ‫شﻮد‬ ‫می‬ ‫باعﺚ‬ ‫همﭽنﯿﻦ‬‫ی‬ coupling‫شﻮد‬ ‫کمتر‬.
  • 32. Composite Pattern ‫کند‬ ‫مﻲ‬ ‫ﺗرکﯿﺐ‬ ‫درﺧتﻲ‬ ‫ساﺧتارهاي‬ ‫در‬ ‫را‬ ‫اشﯿا‬.Composite‫اشﯿا‬ ‫با‬ ‫دهد‬ ‫مﻲ‬ ‫اجازه‬ ‫کاربران‬ ‫به‬ ‫کنند‬ ‫برﺧﻮرد‬ ‫ﻳﮑﺴان‬ ‫طﻮر‬ ‫به‬ ‫ﺗرکﯿبﻲ‬ ‫اشﯿا‬ ‫و‬ ‫منفرد‬.
  • 33. Iterator Pattern ‫بﯿن‬ ‫مﻲ‬ ‫ﺗدارﮎ‬ ‫متﻮاﻟﻲ‬ ‫طﻮر‬ ‫به‬ ‫ﭘﯿﻮسته‬ ‫بﻬم‬ ‫شی‬ ‫ﻳک‬ ‫عناﺻر‬ ‫به‬ ‫دسترسﻲ‬ ‫جﻬﺖ‬ ‫اي‬ ‫شﯿﻮه‬‫بدون‬ ‫د‬ ‫کند‬ ‫مﺨاطره‬ ‫دﭼار‬ ‫را‬ ‫مﻮجﻮد‬ ‫نماﻳﺶ‬ ‫که‬ ‫اﻳﻦ‬.
  • 34. Abstract Factory Pattern ‫کند‬ ‫می‬ ‫ﺗﻮﻟﯿد‬ ‫را‬ ‫هﺴتند‬ ‫مرﺗبﻂ‬ ‫یﮑدیﮕر‬ ‫به‬ ‫ﺧانﻮاده‬ ‫اعضای‬ ‫که‬ ‫اشﯿا‬ ‫از‬ ‫هایی‬ ‫ﺧانﻮاده‬
  • 35. Bridge Pattern ‫بتﻮانند‬ ‫طرف‬ ‫دو‬ ‫که‬ ‫ایﻦ‬ ‫برای‬ ‫کﻼس‬ ‫یک‬ ‫انتﺰاعی‬ ‫ﻗﺴمﺖ‬ ‫از‬ ‫سازی‬ ‫ﭘﯿاده‬ ‫ﻗﺴمﺖ‬ ‫ساﺧتﻦ‬ ‫جدا‬‫به‬ ‫کنند‬ ‫ﺗﻐﯿﯿر‬ ‫مﺴتقﻼ‬ ‫و‬ ‫راﺣتی‬.
  • 36. Builder Pattern ‫مﻲ‬ ‫ساﺧﺖ‬ ‫فرآﻳند‬ ‫همان‬ ‫که‬ ‫کند‬ ‫مﻲ‬ ‫مﺠﺰا‬ ‫آن‬ ‫نماﻳﺶ‬ ‫از‬ ‫اي‬ ‫ﮔﻮنه‬ ‫به‬ ‫را‬ ‫ﭘﯿﺠﯿده‬ ‫شی‬ ‫ﻳک‬ ‫ساﺧﺖ‬ ‫کند‬ ‫ایﺠاد‬ ‫متفاوﺗی‬ ‫های‬ ‫نمایﺶ‬ ‫ﺗﻮاند‬.
  • 37. Command Pattern ‫یک‬ ‫که‬ ‫کند‬ ‫می‬ ‫مشﺨص‬‫عملﯿات‬(operation)‫می‬ ‫مدیریﺖ‬ ‫را‬ ‫ها‬ ‫آن‬ ‫انﺠام‬ ‫و‬ ‫شﻮد‬ ‫انﺠام‬ ‫ﭼﮕﻮنه‬ ‫کند‬.
  • 38. Interpreter Pattern ‫طراﺣی‬ ‫در‬ ‫ﺗنﻬا‬ ‫که‬ ‫شﻮد‬ ‫می‬ ‫استفاده‬ ‫جمﻼت‬ ‫ﺗفﺴﯿر‬ ‫و‬ ‫زبان‬ ‫یک‬ ‫ﮔرامرهای‬ ‫ﺗعریﻒ‬ ‫جﻬﺖ‬ ‫دارد‬ ‫کاربرد‬ ‫کامپایلرها‬
  • 39. Prototype Pattern ‫باشد‬ ‫داشته‬ ‫را‬ ‫اﺻلی‬ ‫شی‬ ‫ﺧﻮاص‬ ‫که‬ ‫جدید‬ ‫شﯿﺌی‬ ‫کردن‬ ‫کپی‬ ‫و‬ ‫ساﺧﺖ‬ ‫برای‬.
  • 40. Proxy Pattern ‫ر‬ ‫آن‬ ‫به‬ ‫دسترسﻲ‬ ‫ﭼﮕﻮنﮕﻲ‬ ‫ﺗا‬ ‫کند‬ ‫مﻲ‬ ‫فراهم‬ ‫ﮔﯿرنده‬ ‫جاي‬ ‫ﻳا‬ ‫جانشﯿﻦ‬ ‫ﻳک‬ ‫دﻳﮕر‬ ‫شی‬ ‫براي‬‫ا‬ ‫کند‬ ‫کنترﻝ‬.
  • 41. Visitor Pattern ‫کا‬ ‫آن‬ ‫در‬ ‫که‬ ‫عناﺻري‬ ‫هاي‬ ‫کﻼس‬ ‫ﺗﻐﯿﯿر‬ ‫بدون‬ ‫را‬ ‫جدﻳد‬ ‫عملﯿات‬ ‫دهد‬ ‫مﻲ‬ ‫مﺠاﻝ‬ ‫شما‬ ‫به‬ ‫وﻳﺰﻳتﻮر‬‫ر‬ ‫دهﯿد‬ ‫ﺗﻐﯿﯿر‬ ‫کند‬ ‫مﻲ‬.
  • 43. “ ”‫از‬ ‫اﺳتﻔاده‬ ‫به‬ ‫ﻣﺠبور‬ ‫را‬ ‫ﺧود‬Design Pattern‫آ‬ ‫به‬ ‫که‬ ‫زﻣاﻧی‬ ‫تنﻬا‬ ‫ﻭ‬ ‫ﻧکنیﺪ‬ ‫ﻫا‬‫ﻧﻬا‬ ‫برﻭیﺪ‬ ‫آﻧﻬا‬ ‫ﺳراغ‬ ‫به‬ ‫داریﺪ‬ ‫ﻧیاز‬. ‫آﺧر‬ ‫سﺨﻦ‬