IranIT.info Articles
عنوان الگوهاي طراحي، قسمت ششم : ادامه فصل اول، بخش 5-1
نويسندهحسن ابوالحسنى تاريخ ارسال 27/06/1381 نام قسمت فناورى
1.5 سازماندهي کاتالوگ
الگوهاي طراحي از نظر وزن و سطح تجرد با يکديگر تفاوت دارند. بخاطر اينکه الگوهاي طراحي زيادي وجود دارند نياز است که آنها را سازماندهي کنيم. در اين بخش الگوهاي طراحي را طبقه بندي کرده تا بتوان به فاميلي هاي الگوهاي مرتبط ارجاع کرد. اين طبقه بندي کمک مي کند تا الگوهاي طراحي را سريعتر ياد گرفته و همچنين هدايت کننده تلاشها براي يافتن الگوهاي جديد است.

مقصود (purpose)
ايجادي (creational) ساختاري (structural) رفتاري (behavorial)
محدوده
(scope)
کلاس
(class)
متد کارخانه (107)Factory Method وفق دهنده (کلاس) (139)Adapter مفسر (243)Interpreter
متد الگو (325)Template Method
شيء
(object)
کارخانه مجرد (87)Abstract Factory

سازنده (97)Builder

نمونه (117)Prototype

يگانه (127)Singleton
وفق دهنده (شيء) (139) Adapter

پل (151)Bridge

ترکيب (163)Composite

آذينگر (175)Decorator

نماي خارجي (185)Facade

مگس وزن (195)Flyweight

نماينده (207)Proxy
زنجيره وظايف (223)Chain of Responsibility

فرمان (223)Command

تکرار کننده (257)Iterator

مياندار (273)Mediator

خاطره (283)Memento

مشاهده گر Observer(293)

حالت (305)State

استراتژي (315)Strategy

ملاقات کننده (331)Visitor
جدول 1.1 فضاي الگوهاي طراحي


الگوهاي طراحي را بر اساس دو معيار طبقه بندي مي کنيم (جدول 1.1). اولين معيار، که مقصود ناميده شده، منعکس کننده آنچه يک الگو انجام مي دهد است. يک الگو ممکن است هدف ايجادي، ساختاري يا رفتاري داشته باشد. الگوهاي ايجادي پروسه ايجاد اشياء را مورد توجه قرار مي دهند. الگوهاي ساختاري با ترکيب کلاسها و اشياء سروکار دارند. الگوهاي رفتاري طرقي که اشياء با همديگر فعل و انفعال انجام داده و وظايف را توزيع مي کنند مشخص مي سازند.

معيار دوم، که محدوده ناميده شده، مشخص کننده اينکه الگو بر روي کلاسها يا اشياء اعمال مي گردد است. الگوهاي در محدوده کلاسها با ارتباطات بين کلاسها و زير کلاسهاي آنها سر و کار دارند. اينگونه ارتباطات از طريق وراثت برقرار مي گردد، که بنابراين در زمان کمپايل ثابت مي شوند. الگوهاي در محدوده اشياء با ارتباطات بين اشياء سرو کار داشته که مي تواند در زمان اجرا تغيير کرده و در نتيجه پويا هستند. تقريبا تمام الگوها از وراثت استفاده مي کنند. بنابراين الگوهايي که با برچسب "در محدوده کلاس" معين شده اند آنهايي هستند که تنها بر روي ارتباط بين کلاسها تاکيد دارند. توجه کنيد که بيشتر الگوها در محدوده اشياء عمل مي کنند.

الگوهاي ايجادي که در محدوده کلاسها هستند قسمتي از ايجاد اشياء را به زير کلاسها محول مي کنند، در حاليکه الگوهاي ايجادي در محدوده اشياء چنين عملي را به شيء ديگري محول مي نمايند. الگوهاي ساختاري کلاسي از وراثت براي ترکيب کلاسها استفاده کرده در عوض الگوهاي ساختاري در محدوه اشياء روشهايي براي آميختن اشياء را شرح مي دهند. الگوهاي رفتاري کلاسي از وراثت براي تشريح الگوريتم ها و کنترل جريان اجراي برنامه ها استفاده مي کنند در صورتيکه الگوهاي رفتاري شيئي چگونگي همکاري گروهي از اشياء براي انجام يک وظيفه که يک شيء به تنهايي نمي تواند به انجام رساند را شرح مي دهند.

روشهاي ديگري براي سازماندهي الگوها وجود دارد. بعضي الگوها اغلب با يکديگر بکار برده مي شوند. براي مثال الگوي ترکيب(Composite) اغلب به همراه تکرار کننده (Iterator)يا ملاقات کننده(Visitor) به کار مي رود. برخي الگوها بديل همديگرند: نمونه(Prototype) اغلب بديلي براي کارخانه مجرد(Abstract Factory) است. بعضي از الگوها گرچه داراي اهداف متفاوتي هستند ولي طرح يکساني حاصل مي کنند. براي مثال ساختار نمودار ترکيب(Composite) و آذين گر(Decorator) مشابه هستند. روشي ديگر سازماندهي الگوها براساس ارجاعاتشان به يکديگر است که در بخش الگوهاي مربوطه براي هر الگو آورده مي شود. شکل 1.1 اين ارتباطات را بصورت گرافيکي نشان مي دهد.

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



قسمت قبلي : الگوهاي طراحي، قسمت پنجم : ادامه فصل اول، بخش 4-1
قسمت بعدي : الگوهاي طراحي، قسمت هفتم : ادامه فصل اول، بخش 6-1