prototype design pattern - الگوی طراحی prototype
TRANSCRIPT
“
”
دانشگاهشیخ بهایی
Prototypeالگوی طراحی
مهندس مرتضوی: استاد
محمد صادق صالحی: ارایه دهنده
دانشگاهشیخ بهایی
324 Prototypeالگوی طراحی –1393پاییز
فهرست مطالب
◄Prototype
Prototypeانگیزه الگوی طراحی ◄
کاربرد◄
واجزای الگوساختار◄مزایا و مشکالت◄
پیاده سازی◄
الگوهای مرتبط◄
نمونه کد◄
منابع◄
پرسش و پاسخ◄
دانشگاهشیخ بهایی
424 Prototypeالگوی طراحی –1393پاییز
نام و دسته بندی
می باشد،Prototypeنام الگو ◄
.می باشد( Creational Patterns)جزو دسته بندی الگو های طراحی بوجودآورنده و◄
PurposeCreational Structural Behavioral
Scope Class Factory Method Adapter Interpreter
Template Method
Object Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Proxy
Flyweight
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor
دانشگاهشیخ بهایی
524 Prototypeالگوی طراحی –1393پاییز
قصد و هدف الگو
:هدف طراحی ◄ایجاد مجموعه ای از اشیا تقریبا یکسان که نوع شان در زمان اجرا مشخص می شود.
:الگوی طراحی◄
فرض کنید یکprototype instanceشناخته شده داریم؛
حال آن را هر گاه کهinstance جدیدی نیاز باشد کپی(clone )میکنیم.
دانشگاهشیخ بهایی
624 Prototypeالگوی طراحی –1393پاییز
قصد و هدف الگو
؟!کاربرد الگو چیست ◄
: مسئله◄
.باشد(Time-consuming)که ایجاد یک نمونه از یک کالس بسیار وقتگیر زمانی -1
.باشدپیجیده ساخت نمونه از روی کالس، بسیار -2
.دنوع پردازش متفاوت می باشندر زمانی که نیاز به کالس هایی داریم که تنها در همچنین -3
:راه حل ◄
حاال به جای اینکه چندین نمونه(instance )بسازیم، یه کپی از نمونه اولیه می سازیم و آن.را به صورت دلخواه تغییر می دهیم
دانشگاهشیخ بهایی
724 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
برایویرایشگریساختقصدکنیدفرض◄.داریمموسیقیهایمتن
میخواهیمعمومیFrameworkاز◄.کنیماستفاده
نوتبرایگرافیکیاشیایخواهیممی◄بههاStaveوهاتوقفموسیقی،های
Frameworkکنیماضافه.
دانشگاهشیخ بهایی
824 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
Tool
Manipulate()
GraphicTool
Manipulate()
RotateTool
Manipulate()
Graphic
Staff MusicalNote
WholeNote HalfNote
دانشگاهشیخ بهایی
924 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
Subclassing:نخستحلراه◄
Tool
Manipulate()
Graphic
Staff MusicalNote
GraphicTool
Manipulate()
RotateTool
Manipulate()
WholeNote HalfNote
StaffGraphicTool
Manipulate()
WholeNoteGraphicTool
Manipulate()
دانشگاهشیخ بهایی
1024 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
object:دومحلراه◄ composition
:سوال◄
FrameworkبهدادنپارامتربرایاشیاءترکیبازچگونهinstanceهایGraphic Toolاستفادهشوند؟ایجادGraphicکالسازاستفادهبااستقرارکهصورتیدرکند،
Tool
Manipulate()
GraphicTool
Manipulate()
RotateTool
Manipulate()
Graphic
Staff MusicalNote
WholeNote HalfNote
دانشگاهشیخ بهایی
1124 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
object:دومحلراه◄ composition
:سوال◄
FrameworkبهدادنپارامتربرایاشیاءترکیبازچگونهinstanceهایGraphic Toolاستفادهشوند؟ایجادGraphicکالسازاستفادهبااستقرارکهصورتیدرکند،
: راه حل ◄
GraphicTool باید یکGraphic جدید با استفاده از“Cloning” یا کپی کردن یکinstance
.بسازدGraphicازیک زیر کالس از
ما به اینinstance ساخته شدهPrototypeمی گوییم.
دانشگاهشیخ بهایی
1224 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
object:دومحلراه◄ composition
Tool
Manipulate()
Draw(Position)
Clone()
Staff MusicalNote
GraphicTool
Manipulate()
RotateTool
Manipulate()
WholeNote HalfNote
Graphic
Draw(Position)
Clone()
Draw(Position)
Clone()
Draw(Position)
Clone()
prototype
دانشگاهشیخ بهایی
1324 Prototypeالگوی طراحی –1393پاییز
Prototypeمثالی از کاربرد الگوی
object:دومحلراه◄ composition
Tool
Manipulate()
Draw(Position)
Clone()
Staff
GraphicTool
Manipulate()
RotateTool
Manipulate()
Graphic
Draw(Position)
Clone()
prototype
MusicalNote
Draw(Position)
Clone()
دانشگاهشیخ بهایی
1424 Prototypeالگوی طراحی –1393پاییز
Prototypeکاربرد الگوی
:کهداردکاربردالگواینمواقعی◄
شوندمیترکیبوایجادچگونهمحصوالتشکهباشدآنازمستقلبایدسیستم.
مثالبرایشود،مشخصاجرازماندرمشخصاتشانها،کالسDynamic Loading.
باشدمتفاوتاجرازماندرمشخصاتشاناماباشیم،داشتهنیازعمومیکالسسرییک.
هایکالسازمراتبیسلسلهبهنیازی«Factory»باشیمنداشته.
ازپرهیزبرایSubclaasیبرنامهدرشییکنندایجادیکهایClient.
ساختهرگاهSubclassباشدپیچیدهیاوگیروقت.
دانشگاهشیخ بهایی
1524 Prototypeالگوی طراحی –1393پاییز
Prototypeساختار و اجزای الگوی
Client+anOperation()
Prototype+clone()+otherOperations()
Return a copy of itself
ConcretePrtotype1+clone();+otherOperations();
ConcretePrototype2+cone();+otherOperations();
Return a copy of itself
Prototype p =
prototype.clone();
prototype
Client : شیClient ازPrototype می خواهد که خودش راCloneکند.
Prototype : یکInterface برایCloneکردن خودش.
Concrete Prototype : پیاده سازی عملیاتClone کردن در کالسPrototype.
دانشگاهشیخ بهایی
1624 Prototypeالگوی طراحی –1393پاییز
Prototypeمزایا و مشکالت الگوی
AbstractالگویدوهایپیامدازتعدادیPrototypeالگوی◄ FactoryوBuilderداردرا:
هایکالسconcrete prototypeازراClientدارندمینگهمخفی.
کههایینامتعدادClientدهدمیکاهشراشناسدمی.
بهClientدهدمیتغییریواصالحهیچبدونرابرنامهازمشخصیهایکالسازاستفادهاجازه.
.اجرازماندرهاPrototypeاضافهوحذفامکان◄
.امکان مشخص کردن اشیاء جدید با مقادیر مختلف را دارد◄
.مختلف را داردساختار امکان مشخص کردن اشیاء جدید با ◄
دانشگاهشیخ بهایی
1724 Prototypeالگوی طراحی –1393پاییز
Prototypeمزایا و مشکالت الگوی
.ها را کاهش می دهدSubclassتعداد ◄
.امکان پیکربندی برنامه های کاربردی با کالس های پویا◄
: Prototypeاصلی الگوی مشکل◄
هرPrototype SubClass باید عملیاتClone را پیاده سازی کند، این عمل ممکن است مشکل.باشد
اضافه کردنCloneزمانی که کالس های تحت نظر وجود داشته باشد، مشکل است.
پیاده سازیClone زمانی که داخلش شامل اشیایی باشد که اجازه ی کپی کردن را نمی دهند و یا منابع.چرخشی دارند، نیز مشکل می باشد
دانشگاهشیخ بهایی
1824 Prototypeالگوی طراحی –1393پاییز
Prototypeپیاده سازی الگوی
:Prototype Managerاستفاده از ◄ استفاده و نگه داشتن یکregistery برایprototypeهای امکان پذیر.
:Cloneپیاده سازی عملیات ◄ سخت ترین قسمت الگویPrototype
:هاCloneمقدار دهی اولیه ◄ فقط در مواقعی کهCloneنیاز به مقدار دهی اولیه با پارامترهای مشخصی دارد.
دانشگاهشیخ بهایی
1924 Prototypeالگوی طراحی –1393پاییز
نمونه کد
:Cloneاستفاده از ◄
:تهیه کپی از یک نمونه این کالس ◄
public class CopyMe implements Cloneable{public Object clone() {
try {return super.clone();
} catch (CloneNotSupportedException ex) {return null;
}}
}
CopyMe instance1 = new CopyMe();
CopyMe instance2 = (CopyMe) instance1.clone();
دانشگاهشیخ بهایی
2024 Prototypeالگوی طراحی –1393پاییز
قسمتی از ثبت نام دانشگاه–نمونه کد
تعیین دانشکده و گرایش دانشجو جهت ثبت نام◄
دانشگاهشیخ بهایی
2124 Prototypeالگوی طراحی –1393پاییز
الگو های مرتبط
از جمله الگوهایی هستند که با Abstract Factoryو Prototypeدو الگوی ◄.گرچه این دو در کنار یکدیگر نیز استفاده می شوند. یکدیگر رقابت دارند
د از طراحی هایی که استفاده های سنگین از ترکیب و دکوراتور الگو ها دارند می توانن◄.به خوبی استفاده کنندPrototypeمزایای
دانشگاهشیخ بهایی
2224 Prototypeالگوی طراحی –1393پاییز
منابع1. Design Patterns – Elements of Reusable Object Oriented Software
(GOF) By Erich Gamma, Richard Helm, Ralph Johnson, John
Vlissides
2. Design Patterns For Dummies, Steve Holzner, 2006, Willey
Publishing.
دانشگاهشیخ بهایی
2324 Prototypeالگوی طراحی –1393پاییز
1. R. Johnson’s Patterns Home Page: http://st-www.cs.uiuc.edu/users/patterns/patterns.html
2. The Portland Pattern Repository: http://c2.com/ppr/index.html
3. Objects International (P. Coad): http://www.oi.com/oi_home.html
4. http://briancray.com/posts/javascript-module-pattern
5. http://software.paspars.com/prototypedesignpattern
وبسایت-منابع
دانشگاهشیخ بهایی
2424 Prototypeالگوی طراحی –1393پاییز
پرسش و پاسخ
(:ص)پیامبر اکرم هایى اسـت و کـلـیدهاى آن پرسش اسـت پـ، خ خـدایتان ر ـتگنجینهدانش و خ شـنونده و پرسشگر خ پاسخگ: یابند خ که با این کار چهار نفر اجر مىبپرسیدکند خ
.دوستدار آنان ۲۶۰: منتخب میزان الحک ة ۴۱: تحف العقول