prototype design pattern - الگوی طراحی prototype

24

Upload: sadegh-salehi

Post on 15-Jul-2015

136 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Prototype design pattern - الگوی طراحی Prototype

Page 2: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

Prototypeالگوی طراحی

مهندس مرتضوی: استاد

محمد صادق صالحی: ارایه دهنده

Page 3: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

324 Prototypeالگوی طراحی –1393پاییز

فهرست مطالب

◄Prototype

Prototypeانگیزه الگوی طراحی ◄

کاربرد◄

واجزای الگوساختار◄مزایا و مشکالت◄

پیاده سازی◄

الگوهای مرتبط◄

نمونه کد◄

منابع◄

پرسش و پاسخ◄

Page 4: Prototype design pattern - الگوی طراحی 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

Page 5: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

524 Prototypeالگوی طراحی –1393پاییز

قصد و هدف الگو

:هدف طراحی ◄ایجاد مجموعه ای از اشیا تقریبا یکسان که نوع شان در زمان اجرا مشخص می شود.

:الگوی طراحی◄

فرض کنید یکprototype instanceشناخته شده داریم؛

حال آن را هر گاه کهinstance جدیدی نیاز باشد کپی(clone )میکنیم.

Page 6: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

624 Prototypeالگوی طراحی –1393پاییز

قصد و هدف الگو

؟!کاربرد الگو چیست ◄

: مسئله◄

.باشد(Time-consuming)که ایجاد یک نمونه از یک کالس بسیار وقتگیر زمانی -1

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

.دنوع پردازش متفاوت می باشندر زمانی که نیاز به کالس هایی داریم که تنها در همچنین -3

:راه حل ◄

حاال به جای اینکه چندین نمونه(instance )بسازیم، یه کپی از نمونه اولیه می سازیم و آن.را به صورت دلخواه تغییر می دهیم

Page 7: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

724 Prototypeالگوی طراحی –1393پاییز

Prototypeمثالی از کاربرد الگوی

برایویرایشگریساختقصدکنیدفرض◄.داریمموسیقیهایمتن

میخواهیمعمومیFrameworkاز◄.کنیماستفاده

نوتبرایگرافیکیاشیایخواهیممی◄بههاStaveوهاتوقفموسیقی،های

Frameworkکنیماضافه.

Page 8: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

824 Prototypeالگوی طراحی –1393پاییز

Prototypeمثالی از کاربرد الگوی

Tool

Manipulate()

GraphicTool

Manipulate()

RotateTool

Manipulate()

Graphic

Staff MusicalNote

WholeNote HalfNote

Page 9: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

924 Prototypeالگوی طراحی –1393پاییز

Prototypeمثالی از کاربرد الگوی

Subclassing:نخستحلراه◄

Tool

Manipulate()

Graphic

Staff MusicalNote

GraphicTool

Manipulate()

RotateTool

Manipulate()

WholeNote HalfNote

StaffGraphicTool

Manipulate()

WholeNoteGraphicTool

Manipulate()

Page 10: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

1024 Prototypeالگوی طراحی –1393پاییز

Prototypeمثالی از کاربرد الگوی

object:دومحلراه◄ composition

:سوال◄

FrameworkبهدادنپارامتربرایاشیاءترکیبازچگونهinstanceهایGraphic Toolاستفادهشوند؟ایجادGraphicکالسازاستفادهبااستقرارکهصورتیدرکند،

Tool

Manipulate()

GraphicTool

Manipulate()

RotateTool

Manipulate()

Graphic

Staff MusicalNote

WholeNote HalfNote

Page 11: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

1124 Prototypeالگوی طراحی –1393پاییز

Prototypeمثالی از کاربرد الگوی

object:دومحلراه◄ composition

:سوال◄

FrameworkبهدادنپارامتربرایاشیاءترکیبازچگونهinstanceهایGraphic Toolاستفادهشوند؟ایجادGraphicکالسازاستفادهبااستقرارکهصورتیدرکند،

: راه حل ◄

GraphicTool باید یکGraphic جدید با استفاده از“Cloning” یا کپی کردن یکinstance

.بسازدGraphicازیک زیر کالس از

ما به اینinstance ساخته شدهPrototypeمی گوییم.

Page 12: Prototype design pattern - الگوی طراحی 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

Page 13: Prototype design pattern - الگوی طراحی 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()

Page 14: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

1424 Prototypeالگوی طراحی –1393پاییز

Prototypeکاربرد الگوی

:کهداردکاربردالگواینمواقعی◄

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

مثالبرایشود،مشخصاجرازماندرمشخصاتشانها،کالسDynamic Loading.

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

هایکالسازمراتبیسلسلهبهنیازی«Factory»باشیمنداشته.

ازپرهیزبرایSubclaasیبرنامهدرشییکنندایجادیکهایClient.

ساختهرگاهSubclassباشدپیچیدهیاوگیروقت.

Page 15: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

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.

Page 16: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

1624 Prototypeالگوی طراحی –1393پاییز

Prototypeمزایا و مشکالت الگوی

AbstractالگویدوهایپیامدازتعدادیPrototypeالگوی◄ FactoryوBuilderداردرا:

هایکالسconcrete prototypeازراClientدارندمینگهمخفی.

کههایینامتعدادClientدهدمیکاهشراشناسدمی.

بهClientدهدمیتغییریواصالحهیچبدونرابرنامهازمشخصیهایکالسازاستفادهاجازه.

.اجرازماندرهاPrototypeاضافهوحذفامکان◄

.امکان مشخص کردن اشیاء جدید با مقادیر مختلف را دارد◄

.مختلف را داردساختار امکان مشخص کردن اشیاء جدید با ◄

Page 17: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

1724 Prototypeالگوی طراحی –1393پاییز

Prototypeمزایا و مشکالت الگوی

.ها را کاهش می دهدSubclassتعداد ◄

.امکان پیکربندی برنامه های کاربردی با کالس های پویا◄

: Prototypeاصلی الگوی مشکل◄

هرPrototype SubClass باید عملیاتClone را پیاده سازی کند، این عمل ممکن است مشکل.باشد

اضافه کردنCloneزمانی که کالس های تحت نظر وجود داشته باشد، مشکل است.

پیاده سازیClone زمانی که داخلش شامل اشیایی باشد که اجازه ی کپی کردن را نمی دهند و یا منابع.چرخشی دارند، نیز مشکل می باشد

Page 18: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

1824 Prototypeالگوی طراحی –1393پاییز

Prototypeپیاده سازی الگوی

:Prototype Managerاستفاده از ◄ استفاده و نگه داشتن یکregistery برایprototypeهای امکان پذیر.

:Cloneپیاده سازی عملیات ◄ سخت ترین قسمت الگویPrototype

:هاCloneمقدار دهی اولیه ◄ فقط در مواقعی کهCloneنیاز به مقدار دهی اولیه با پارامترهای مشخصی دارد.

Page 19: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

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();

Page 20: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

2024 Prototypeالگوی طراحی –1393پاییز

قسمتی از ثبت نام دانشگاه–نمونه کد

تعیین دانشکده و گرایش دانشجو جهت ثبت نام◄

Page 21: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

2124 Prototypeالگوی طراحی –1393پاییز

الگو های مرتبط

از جمله الگوهایی هستند که با Abstract Factoryو Prototypeدو الگوی ◄.گرچه این دو در کنار یکدیگر نیز استفاده می شوند. یکدیگر رقابت دارند

د از طراحی هایی که استفاده های سنگین از ترکیب و دکوراتور الگو ها دارند می توانن◄.به خوبی استفاده کنندPrototypeمزایای

Page 22: Prototype design pattern - الگوی طراحی 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.

Page 23: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

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

وبسایت-منابع

Page 24: Prototype design pattern - الگوی طراحی Prototype

دانشگاهشیخ بهایی

2424 Prototypeالگوی طراحی –1393پاییز

پرسش و پاسخ

(:ص)پیامبر اکرم هایى اسـت و کـلـیدهاى آن پرسش اسـت پـ، خ خـدایتان ر ـتگنجینهدانش و خ شـنونده و پرسشگر خ پاسخگ: یابند خ که با این کار چهار نفر اجر مىبپرسیدکند خ

.دوستدار آنان ۲۶۰: منتخب میزان الحک ة ۴۱: تحف العقول