Upload
reza-rahimy
View
122
Download
1
Embed Size (px)
Citation preview
آشنایی با Design
Patternرضا رحیمی
Rtwo.ir95تابستان
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]
“
”د مجدده ستفااقابلیت
یک جملهدر هدف
چی قراره بحث کنیم؟ لگو چیستا
؟ها استفاده کنیم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دست به طبقه بندی مدون
GoFها در Design Patternدسته بندی انواع
: الگو در سه دسته23
الگوهای ساختاری(Structural )ء شیااتشكیل اي نها برآكت رمشاء و شیاابط بین روا
پیچیده تر
الگوهای ایجادی(Creational )ساخت اشیا و ارجاع به آنها
الگوهای رفتاری(Behavioral )و الگوریتممسئولیت هگايد ه از ديژوبه ء شیاابین ط تباار
Creational Structural Behavioral
Factory MethodAbstract FactoryBuilderPrototypeSingleton
AdapterBridgeCompositeDecoratorFlyweightFaçadeProxy
InterpreterTemplate MethodChain of ResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor
ها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