45
ی با آشنایDesign Pattern می رضا رحیRtwo.ir ابستان ت95

Introduction to design pattern

Embed Size (px)

Citation preview

Page 1: Introduction to design pattern

آشنایی با Design

Patternرضا رحیمی

Rtwo.ir95تابستان

Page 2: Introduction to design pattern

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

”د مجدده ستفااقابلیت

یک جملهدر هدف

Page 4: Introduction to design pattern

چی قراره بحث کنیم؟ لگو چیستا

؟ها استفاده کنیمDesign Patternچرا باید از

ها استفاده کنیم؟Design Patternزمانی باید از چه

حی اطري لگوهاایخچه رتا

هالگواارد ستاندا

لگوهااي سته بندد

حیاطري لگوهااي یاامز

الگوهامعرفی

منابع

Page 5: Introduction to design pattern

Patternیا الگو چیستPatternحل می راه ین اکه ري به طو، ستاآن حل س راه ساو امساله از توصیفی لگو یا ا

.دگیرار قرده ستفارد امختلفی موي ند به شکل هااتو

Page 6: Introduction to design pattern

Framework(اییگره شییدگاداز ) چیست ؟یک ، همر کنار در کاو هایی که با ترکیب س کالاي از مجموعه عبارتست از Frameworkیک .کنندمی د یجاار افزم انراز ص خاس کالیک اي برد مجدده ستفااحی با قابلیت اطر

Page 7: Introduction to design pattern

جوابگوی نیازهای کالسیک روشهای قدیمی و نبودافزار روز بازار نرم

با رشد سایز و پیچیدگی نرم افزارها

Page 8: Introduction to design pattern

”الت یکسری جواب های ثابت شده به مشک

رایج در طراحی هستند

Design Pattern ؟چیست

Page 9: Introduction to design pattern

توصیف ای برشی رولگوها ن ابازو لگوها ا”ل نتقاو اب خوعمل ،طراحی های بهترین

ستاتجربه

Design Patternچیست ؟

Page 10: Introduction to design pattern

قیماً از کدهای آماده ای نیستند که بتوان مست”ا رویکرد ییک سری اما . آن ها استفاده کرد

نظریه برای حل چالش های عادی ارائه می دهندطراحی

Design Patternچیست ؟

Page 11: Introduction to design pattern

Design Pattern

=حلراه بهترین +توصیف مساله

Page 12: Introduction to design pattern

”حی اطردر سرعت یش افزا

سیستم ها

الگوهاهدف

Page 13: Introduction to design pattern

”توسعه در زمان مقرر و با عملیات

کیفیت باالتری به انجام برسد

مزایای استفاده از الگوها

Page 14: Introduction to design pattern

ها استفاده کنیم؟Design Patternچه زمانی باید از

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

.و سعی کنید آن را با توصیف های الگو تطبیق دهید

Page 15: Introduction to design pattern

شناختها را Design Patternچرا باید روابط کلی میان اجزای درک ، در سی نقش اسابا مدل های کلي طراحی نرم افزار آشنايی

نرم افزار بازی مي کند و طراح را قادر مي سازد که سیستم جديد را در قالب مدل بهبود يافته سیستم پیشین ايجاد نمايد که اين خود می تواند باعث کاهش هزينه های نهايي

شودتولید نرم افزار

الی حموفقیت آن خواهد بود در انتخاب مدل مناسب معماری برای يک نرم افزار زمینه سازفاجعه به بار بیاوردتواند انتخاب مدل غلط می که

معمار سیستم در انتخاب طراحی بهتر از به از سبک های معماری، يک جزئیات هر شناخت. کندمي میان گزينه های موجود کمک

ک داریم مشترن گانیاز به واژ

Page 16: Introduction to design pattern

تاریخچه را راه الکساندر الگوی طراحیکریستوف )ارایه شدکریستوف الکساندرابتدا توسطالگوها

(می دهدحلی برای مسایلی می داند که دایماً در محیط اطراف رخ

با نام1994در سال ( معروف به چهار گانگستر) همکارانش گاما و کتاب

Design Patterns: Elements or Reusable ObjectOriented Software بیشترین تاثیر را درداشته استها Design Patternپیشرفت

ماری شاو و ديويد گارالن از دانشگاه کارنگی ملون آمريکا 1994نخستین بار در سال برایزدندها Design Patternدست به طبقه بندی مدون

Page 17: Introduction to design pattern

GoFها در Design Patternدسته بندی انواع

: الگو در سه دسته23

الگوهای ساختاری(Structural )ء شیااتشكیل اي نها برآكت رمشاء و شیاابط بین روا

پیچیده تر

الگوهای ایجادی(Creational )ساخت اشیا و ارجاع به آنها

الگوهای رفتاری(Behavioral )و الگوریتممسئولیت هگايد ه از ديژوبه ء شیاابین ط تباار

Page 18: Introduction to design pattern

Creational Structural Behavioral

Factory MethodAbstract FactoryBuilderPrototypeSingleton

AdapterBridgeCompositeDecoratorFlyweightFaçadeProxy

InterpreterTemplate MethodChain of ResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor

هاDesign Patternانواع

Page 19: Introduction to design pattern

Singleton Pattern

می ده ستفان اسینگلتوي لگود، از اشود یجاایک نمونه یا شئ فقط س یک کالاز ینکه اي ابر.دشو

Page 20: Introduction to design pattern

Factory Pattern

می ل سااي آن ارکه بري مترهاراپابه با توجه را یگر ي دهاس کالي هانمونه کالسی است که نمایدمی د یجاد، اشو

يک اینترفیس جهت ايجاد يک شی تعیین مي کند ، ولي اجازه مي دهد کالس هاي فرعي تصمیم بگیرند کدام کالس را معرفي کند

Page 21: Introduction to design pattern

Decorator Pattern

جدید به یک ي هاقابلیت ودن فزن امکا، الگواین اممکن ا جرن اماو در زپویا رت به صورا شئ

زدمیسا

به یک تنها رانیم یک قابلیت اتومی توسط این الگو

نکه ون آبدهیم بدص ختصاس ایک کالص از شئ خاکنندتغییر س کالء آن شیااسایر

مسؤولیت هاي اضافي را به طور دينامیک به يکها جايگزيني Decorator. شی ضمیمه مي کند

ه انعطاف پذير جهت طبقه بندي فرعي براي توسع.عملکرد مهیا مي کنند

Page 22: Introduction to design pattern

Observer Pattern

ضعیتش ، ویکفطرهنگامیکه شئ ، میباشدء شیاابه چند بین یک ، بستگیوالگو یک این ا

یک ف ضعیت طروبا توجه به ن را شادضعیت خوو وبسته مطلع می شوند ء واشیا، اتغییر کند. سانی می کنندوزربر

Page 23: Introduction to design pattern

Façade Pattern

دچند كالس مخفي كننک یا يرا در سیستم یک دهندگان مي خواهند پیچیدگي توسعه وقتی

مانند بخش بندی یک تیم فنی و قرار دادن افرادی به عنوان

باتیم و مخفی کردن پیچیدگی کنترل تمامی تیم مسئول

تیماز مسئول استفاده

اینترفیسي يکنواخت براي مجموعه میانجي هاي موجود در

اینترفیسنماي خارجي، . کالس فرعي مهیا مي کند يک

سیستمسطح باالتري را تعريف مي کند که استفاده از

.فرعي را ساده تر مي کند

Page 24: Introduction to design pattern

Adapter Pattern

ز ، وقف دهنده الگوي سازگار سا

.کنندگر کار ایجاد می کند که کالس هایی که با هم مرتبط نیستند بتوانند با یکدیاینترفیسی

كه با اينترفیسي كه لپ تاپ شما نیاز دهد میپريز را به گونه اي تغییر اينترفیس واقع مبدل در .دارد همخواني داشته باشد

Page 25: Introduction to design pattern

State Pattern

به يک شی اجازه مي دهد هنگامي که حالت دروني آن تغییر کرد رفتار خود را

به نظر مي رسد که شی . عوض کند .کالس خود را عوض مي کند

Page 26: Introduction to design pattern

Chain of Responsibility Pattern

مسئولیتالگوي زنجیره

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

Page 27: Introduction to design pattern

Template Method Pattern

الس اسکلت بندي الگوريتم در يک عملیات را تعريف کرده ، پیاده سازی بعضي مراحل را یه کهمچنین به کالس هاي فرعي مجال مي دهد بعضي مراحل يک . های فرعی می سپارد

.الگوريتم را بدون تغییر ساختار الگوريتم دوباره تعريف کند

Page 28: Introduction to design pattern

Strategy Pattern

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

.کنند متفاوت باشد

Page 29: Introduction to design pattern

Memento Pattern

ت حالت دروني يک شی را به گونه اي دقیق ذخیره می کند که بعدا بتوان شی را به اين حال.بازگرداند

Page 30: Introduction to design pattern

Flyweight Pattern

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

Page 31: Introduction to design pattern

Mediator Pattern

. هدشیئی را تعیین مي کند که چگونگي تعامل يک مجموعه اشیا را در یک محفظه قرار مي دی همچنین باعث می شود که اشیا به طور دو به دو کمتر با هم ارتباط داشته باشند و پدیده

coupling کمتر شود.

Page 32: Introduction to design pattern

Composite Pattern

به کاربران اجازه مي دهد با اشیا Composite. اشیا را در ساختارهاي درختي ترکیب مي کند.منفرد و اشیا ترکیبي به طور يکسان برخورد کنند

Page 33: Introduction to design pattern

Iterator Pattern

د بدون شیوه اي جهت دسترسي به عناصر يک شی بهم پیوسته به طور متوالي تدارک مي بین.اين که نمايش موجود را دچار مخاطره کند

Page 34: Introduction to design pattern

Abstract Factory Pattern

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

Page 35: Introduction to design pattern

Bridge Pattern

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

Page 36: Introduction to design pattern

Builder Pattern

ساخت يک شی پیجیده را به گونه اي از نمايش آن مجزا مي کند که همان فرآيند ساخت مي.تواند نمایش های متفاوتی ایجاد کند

Page 37: Introduction to design pattern

Command Pattern

چگونه انجام شود و انجام آن ها را مدیریت می (operation)عملیاتمشخص می کند که یک .کند

Page 38: Introduction to design pattern

Interpreter Pattern

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

Page 39: Introduction to design pattern

Prototype Pattern

.برای ساخت و کپی کردن شیئی جدید که خواص شی اصلی را داشته باشد

Page 40: Introduction to design pattern

Proxy Pattern

ا براي شی ديگر يک جانشین يا جاي گیرنده فراهم مي کند تا چگونگي دسترسي به آن ر.کنترل کند

Page 41: Introduction to design pattern

Visitor Pattern

ر ويزيتور به شما مجال مي دهد عملیات جديد را بدون تغییر کالس هاي عناصري که در آن کا.مي کند تغییر دهید

Page 42: Introduction to design pattern

Framework زی ساده پیایک

یلگوهاااز هی ویا گریک از قعی واستاحی اطر

Page 43: Introduction to design pattern

Designخود را مجبور به استفاده از”

Patternنها ها نکنید و تنها زمانی که به آ.نیاز دارید به سراغ آنها بروید

سخن آخر

Page 44: Introduction to design pattern

منابعThedeveloper.ir

itpro.ir

sourcemaking.com

Page 45: Introduction to design pattern