introduction to design pattern
TRANSCRIPT
![Page 1: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/1.jpg)
آشنایی با Design
Patternرضا رحیمی
Rtwo.ir95تابستان
![Page 2: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/2.jpg)
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 : [email protected]
![Page 3: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/3.jpg)
“
”د مجدده ستفااقابلیت
یک جملهدر هدف
![Page 4: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/4.jpg)
چی قراره بحث کنیم؟ لگو چیستا
؟ها استفاده کنیمDesign Patternچرا باید از
ها استفاده کنیم؟Design Patternزمانی باید از چه
حی اطري لگوهاایخچه رتا
هالگواارد ستاندا
لگوهااي سته بندد
حیاطري لگوهااي یاامز
الگوهامعرفی
منابع
![Page 5: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/5.jpg)
Patternیا الگو چیستPatternحل می راه ین اکه ري به طو، ستاآن حل س راه ساو امساله از توصیفی لگو یا ا
.دگیرار قرده ستفارد امختلفی موي ند به شکل هااتو
![Page 6: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/6.jpg)
Framework(اییگره شییدگاداز ) چیست ؟یک ، همر کنار در کاو هایی که با ترکیب س کالاي از مجموعه عبارتست از Frameworkیک .کنندمی د یجاار افزم انراز ص خاس کالیک اي برد مجدده ستفااحی با قابلیت اطر
![Page 7: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/7.jpg)
جوابگوی نیازهای کالسیک روشهای قدیمی و نبودافزار روز بازار نرم
با رشد سایز و پیچیدگی نرم افزارها
![Page 8: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/8.jpg)
“
”الت یکسری جواب های ثابت شده به مشک
رایج در طراحی هستند
Design Pattern ؟چیست
![Page 9: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/9.jpg)
“
توصیف ای برشی رولگوها ن ابازو لگوها ا”ل نتقاو اب خوعمل ،طراحی های بهترین
ستاتجربه
Design Patternچیست ؟
![Page 10: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/10.jpg)
“
قیماً از کدهای آماده ای نیستند که بتوان مست”ا رویکرد ییک سری اما . آن ها استفاده کرد
نظریه برای حل چالش های عادی ارائه می دهندطراحی
Design Patternچیست ؟
![Page 11: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/11.jpg)
Design Pattern
=حلراه بهترین +توصیف مساله
![Page 12: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/12.jpg)
“
”حی اطردر سرعت یش افزا
سیستم ها
الگوهاهدف
![Page 13: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/13.jpg)
“
”توسعه در زمان مقرر و با عملیات
کیفیت باالتری به انجام برسد
مزایای استفاده از الگوها
![Page 14: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/14.jpg)
ها استفاده کنیم؟Design Patternچه زمانی باید از
هر الگو درباره یک مشکل طراحی صحبت میکند و یک راه حل استاندارد برای آن ارائه می کنید بنابراین قبل از استفاده از آنها کمی وقت برای تجزیه و تحلیل مسائل طراحی صرف. دهد
.و سعی کنید آن را با توصیف های الگو تطبیق دهید
![Page 15: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/15.jpg)
شناختها را Design Patternچرا باید روابط کلی میان اجزای درک ، در سی نقش اسابا مدل های کلي طراحی نرم افزار آشنايی
نرم افزار بازی مي کند و طراح را قادر مي سازد که سیستم جديد را در قالب مدل بهبود يافته سیستم پیشین ايجاد نمايد که اين خود می تواند باعث کاهش هزينه های نهايي
شودتولید نرم افزار
الی حموفقیت آن خواهد بود در انتخاب مدل مناسب معماری برای يک نرم افزار زمینه سازفاجعه به بار بیاوردتواند انتخاب مدل غلط می که
معمار سیستم در انتخاب طراحی بهتر از به از سبک های معماری، يک جزئیات هر شناخت. کندمي میان گزينه های موجود کمک
ک داریم مشترن گانیاز به واژ
![Page 16: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/16.jpg)
تاریخچه را راه الکساندر الگوی طراحیکریستوف )ارایه شدکریستوف الکساندرابتدا توسطالگوها
(می دهدحلی برای مسایلی می داند که دایماً در محیط اطراف رخ
با نام1994در سال ( معروف به چهار گانگستر) همکارانش گاما و کتاب
Design Patterns: Elements or Reusable ObjectOriented Software بیشترین تاثیر را درداشته استها Design Patternپیشرفت
ماری شاو و ديويد گارالن از دانشگاه کارنگی ملون آمريکا 1994نخستین بار در سال برایزدندها Design Patternدست به طبقه بندی مدون
![Page 17: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/17.jpg)
GoFها در Design Patternدسته بندی انواع
: الگو در سه دسته23
الگوهای ساختاری(Structural )ء شیااتشكیل اي نها برآكت رمشاء و شیاابط بین روا
پیچیده تر
الگوهای ایجادی(Creational )ساخت اشیا و ارجاع به آنها
الگوهای رفتاری(Behavioral )و الگوریتممسئولیت هگايد ه از ديژوبه ء شیاابین ط تباار
![Page 18: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/18.jpg)
Creational Structural Behavioral
Factory MethodAbstract FactoryBuilderPrototypeSingleton
AdapterBridgeCompositeDecoratorFlyweightFaçadeProxy
InterpreterTemplate MethodChain of ResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor
هاDesign Patternانواع
![Page 19: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/19.jpg)
Singleton Pattern
می ده ستفان اسینگلتوي لگود، از اشود یجاایک نمونه یا شئ فقط س یک کالاز ینکه اي ابر.دشو
![Page 20: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/20.jpg)
Factory Pattern
می ل سااي آن ارکه بري مترهاراپابه با توجه را یگر ي دهاس کالي هانمونه کالسی است که نمایدمی د یجاد، اشو
يک اینترفیس جهت ايجاد يک شی تعیین مي کند ، ولي اجازه مي دهد کالس هاي فرعي تصمیم بگیرند کدام کالس را معرفي کند
![Page 21: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/21.jpg)
Decorator Pattern
جدید به یک ي هاقابلیت ودن فزن امکا، الگواین اممکن ا جرن اماو در زپویا رت به صورا شئ
زدمیسا
به یک تنها رانیم یک قابلیت اتومی توسط این الگو
نکه ون آبدهیم بدص ختصاس ایک کالص از شئ خاکنندتغییر س کالء آن شیااسایر
مسؤولیت هاي اضافي را به طور دينامیک به يکها جايگزيني Decorator. شی ضمیمه مي کند
ه انعطاف پذير جهت طبقه بندي فرعي براي توسع.عملکرد مهیا مي کنند
![Page 22: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/22.jpg)
Observer Pattern
ضعیتش ، ویکفطرهنگامیکه شئ ، میباشدء شیاابه چند بین یک ، بستگیوالگو یک این ا
یک ف ضعیت طروبا توجه به ن را شادضعیت خوو وبسته مطلع می شوند ء واشیا، اتغییر کند. سانی می کنندوزربر
![Page 23: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/23.jpg)
Façade Pattern
دچند كالس مخفي كننک یا يرا در سیستم یک دهندگان مي خواهند پیچیدگي توسعه وقتی
مانند بخش بندی یک تیم فنی و قرار دادن افرادی به عنوان
باتیم و مخفی کردن پیچیدگی کنترل تمامی تیم مسئول
تیماز مسئول استفاده
اینترفیسي يکنواخت براي مجموعه میانجي هاي موجود در
اینترفیسنماي خارجي، . کالس فرعي مهیا مي کند يک
سیستمسطح باالتري را تعريف مي کند که استفاده از
.فرعي را ساده تر مي کند
![Page 24: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/24.jpg)
Adapter Pattern
ز ، وقف دهنده الگوي سازگار سا
.کنندگر کار ایجاد می کند که کالس هایی که با هم مرتبط نیستند بتوانند با یکدیاینترفیسی
كه با اينترفیسي كه لپ تاپ شما نیاز دهد میپريز را به گونه اي تغییر اينترفیس واقع مبدل در .دارد همخواني داشته باشد
![Page 25: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/25.jpg)
State Pattern
به يک شی اجازه مي دهد هنگامي که حالت دروني آن تغییر کرد رفتار خود را
به نظر مي رسد که شی . عوض کند .کالس خود را عوض مي کند
![Page 26: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/26.jpg)
Chain of Responsibility Pattern
مسئولیتالگوي زنجیره
.در قالب یک زنجیره از اشیا به درخواست کاربر پاسخ می دهد
![Page 27: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/27.jpg)
Template Method Pattern
الس اسکلت بندي الگوريتم در يک عملیات را تعريف کرده ، پیاده سازی بعضي مراحل را یه کهمچنین به کالس هاي فرعي مجال مي دهد بعضي مراحل يک . های فرعی می سپارد
.الگوريتم را بدون تغییر ساختار الگوريتم دوباره تعريف کند
![Page 28: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/28.jpg)
Strategy Pattern
ض يک خانواده از الگوريتم ها را تعريف کرده ، هر يک را در پوشش قرار داده و آن ها را قابل تعویاستراتژي اجازه مي دهد الگوريتم به طور مستقل از کاربران که از آن استفاد مي. مي سازد
.کنند متفاوت باشد
![Page 29: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/29.jpg)
Memento Pattern
ت حالت دروني يک شی را به گونه اي دقیق ذخیره می کند که بعدا بتوان شی را به اين حال.بازگرداند
![Page 30: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/30.jpg)
Flyweight Pattern
.زمانی استفاده می شود که تعداد اشیا بسیار زیاد باشد و مدیریت آنها سخت باشد
![Page 31: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/31.jpg)
Mediator Pattern
. هدشیئی را تعیین مي کند که چگونگي تعامل يک مجموعه اشیا را در یک محفظه قرار مي دی همچنین باعث می شود که اشیا به طور دو به دو کمتر با هم ارتباط داشته باشند و پدیده
coupling کمتر شود.
![Page 32: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/32.jpg)
Composite Pattern
به کاربران اجازه مي دهد با اشیا Composite. اشیا را در ساختارهاي درختي ترکیب مي کند.منفرد و اشیا ترکیبي به طور يکسان برخورد کنند
![Page 33: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/33.jpg)
Iterator Pattern
د بدون شیوه اي جهت دسترسي به عناصر يک شی بهم پیوسته به طور متوالي تدارک مي بین.اين که نمايش موجود را دچار مخاطره کند
![Page 34: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/34.jpg)
Abstract Factory Pattern
خانواده هایی از اشیا که اعضای خانواده به یکدیگر مرتبط هستند را تولید می کند
![Page 35: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/35.jpg)
Bridge Pattern
به جدا ساختن قسمت پیاده سازی از قسمت انتزاعی یک کالس برای این که دو طرف بتوانند.راحتی و مستقال تغییر کنند
![Page 36: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/36.jpg)
Builder Pattern
ساخت يک شی پیجیده را به گونه اي از نمايش آن مجزا مي کند که همان فرآيند ساخت مي.تواند نمایش های متفاوتی ایجاد کند
![Page 37: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/37.jpg)
Command Pattern
چگونه انجام شود و انجام آن ها را مدیریت می (operation)عملیاتمشخص می کند که یک .کند
![Page 38: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/38.jpg)
Interpreter Pattern
جهت تعریف گرامرهای یک زبان و تفسیر جمالت استفاده می شود که تنها در طراحی کامپایلرها کاربرد دارد
![Page 39: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/39.jpg)
Prototype Pattern
.برای ساخت و کپی کردن شیئی جدید که خواص شی اصلی را داشته باشد
![Page 40: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/40.jpg)
Proxy Pattern
ا براي شی ديگر يک جانشین يا جاي گیرنده فراهم مي کند تا چگونگي دسترسي به آن ر.کنترل کند
![Page 41: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/41.jpg)
Visitor Pattern
ر ويزيتور به شما مجال مي دهد عملیات جديد را بدون تغییر کالس هاي عناصري که در آن کا.مي کند تغییر دهید
![Page 42: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/42.jpg)
Framework زی ساده پیایک
یلگوهاااز هی ویا گریک از قعی واستاحی اطر
![Page 43: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/43.jpg)
“
Designخود را مجبور به استفاده از”
Patternنها ها نکنید و تنها زمانی که به آ.نیاز دارید به سراغ آنها بروید
سخن آخر
![Page 44: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/44.jpg)
منابعThedeveloper.ir
itpro.ir
sourcemaking.com
![Page 45: Introduction to design pattern](https://reader033.vdocuments.pub/reader033/viewer/2022051101/5873bb871a28abbc788b5695/html5/thumbnails/45.jpg)