Transcript Slide 1

Prepared by Masoomeh Azadi

لیمجلاوه

Design Patterns

يش  اب .

ار باتك نامز اي راك كي ديناوت يم امش ، يلدنص كي ، باتك كي دننام ، دشاب يكيزيف تيدوجوم كي دناوت يم يش كي .

ديرخب ار نآ و ديناوخب ار نآ، دينك فيصوت كي دننام ، دشاب intangible سمل لباق ريغ و يكيزيف ريغ تيدوجوم كي دنا وت يم يش كي ، دينك ناونع هب فيصوت دناو ت ار يم نآ ديناوت دينك يم فيصوت اما ار زا هورگ و د هليسو هب يعقاو ي ايند دينك نآ سمل ديناوتب ارنآ هك ديناوت يزيچ ره يمن .

يكيزيف دينك تروصب ليمكت و امش ديهد هك ماجنا رد يش ره و راك كي ، يلدنص كي ، باتك كي : دنوش تسا .

دوش ارنآ ، يزيچراك دينك ثحب كي نآ هكنيا يور هتفرگ يم رظن صخشم رد يش كي تايصوصخ كي يم زا زا يگژيو تافص ري كي داقم هدافتسا با هك زا تفص كي هدافتسا دشاب لهات اب عقاو و رد .

دنتسه دننك يش يم كي نايب ار هدننك تفص .

ياراد دروآ دناوت يم تسدب درف يلعف كي يش فيصوت لاثم طيارش كي رد ياه تافص يگژيو .

درف يارب ار درف .

دروآ نآ تافص كي : (attributes يارب مان تفص دننام ) تافص تسا .

۱ يش تسدب لهات ار يش تيعضو كي ناوت يلعف يم تيعضو تفص نيا ناوت رادقم

دورب نآ ها ر يارب دناوت اهراك يم نيا صخش زا كي مادك ره لاثم هك يارب تسا .

دراد نآ ار نداد نآ نداد ماجنا هب ماجنا رداق يياناوت هك يش يرگيد كي راك ) behaviors) هك تسا نارازه و يلمع دنيشنب راتفر ،راتفر ، دودب .

۲ كي باتك تقي باتك ي هب م ار ك قح ي رد ايآ .

دشاب باتك يش هتشاد ؟ ديآ پاچ ماجنا ، باتك باتك يور شياريو رب رفن ده د يم ماجنا ار اهراك يراتفر باسح هچ هب دننام كي نيا يياهراك طسوت هك دناوت يش اهراك يدرف يم نآ باتك ياج يارب نيا باتك هب ار كي راتفر لاوس كي كي ناونع كي .

راشتنا دهد يم يارب ماجنا رشان ار اهراتفر نيا هك .

دوش هب كي ات باتك ديوگيم .

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

صخش هب رداق دريگ ، يش كي نزو كي ي ارب و دق هدش لدم ، فيرعت كي درف يگداوناخ ياهراتفر يعازتنا مان ، مان و يش كي تافص لاثم دياب همه يارب .

يعقاو يش يعازتنا كي يش زا .

تسا هدش يعقاو فذح يش .

ميهدب زا تايئزج اب صيصخت

(Abstract Objects)

يلدم يعازتنا هارمه يعازتنا دراد باتك ءايشا ار يش يش  كي يعازتنا يعقاو صخش كي هك ديوگ يم يعازتنا يش .

تسا يعقاو صخش .

دنك يم صخشم ار تافص نيا اب طبترم ريداقم يعقاو صخش كي .

دشاب هتشاد

اه سلاك و ءايشا نيب طباور و طابترا دنك م ه دا جيا اب هك دنراد شرافس يشور كي دياب هب زاين اهنآ يرتشم سپ ،دهد دننك يم راك شرافس مه ار اب يياه .

دنراد دنك زاين طيلب هفاضا دنهدب يرتشم ماجنا شرافس كي نآ يراك هك هب ار هكنيا يتقو .

شرظن يارب دننك دروم ءايشا رارقرب طيلب   راركت .

انيع تسا ار يعق سلاك او ود ي ايند نيب ءايشا طابترا نيب كي هطبار ات دنراد (association زاين ) دنتسه هطبار كي طيلب .

شرافس تسا يش ،يرتشم ود نيب هدنيامن هطبار هك ( Link يرازفا ) كنيل مرن .

كي ءايشا دننك  : دوش يم ميسقت توافتم لكش هس هب ) ء ايشا ( اه سلاك نيب هطبار (association ) طابترا (aggregation) عمجت هطبار (composition) بيكرت هطبار .1

.2

.3

(association )

طابترا هداس كي هب روطب ي ش طابترا كي كي .

.

دشاب دسانشب يم ار يش ود يرگيد نيبريظن درف تسا .

هب ريظن نكمم دنادب رگيد هطبار درف كي كي هك هك .

دشاب يقيرط سلاك ياهراتفر و يم نامه طابترا هب ،هطبار دناد يم تافص هرابرد اتدهد لكش رگيد يم نيرت يش هداس هرابرد ناكما سلاك

(aggregation )

عمجت هطبار زا ييا دننام ه رگي هنومن د لماش سلاك دناوت نيدنچ هطبار نكمم يم يم رد ي .

ت نعي سا دور هدش يم ليكشت نيب زا داج يا ار كيتسلا و زا و روتوم سلاك دوخ اه يش هك كي لاثم عمجت ،ديريگب يارب رظن .

هطبار رد دينك ار رد .

تسا نيشام شخب داجيا رياس فلتخم يارب رگيد ياهنامز سلاك رد ءزج داجيا و ار ءزج سلاك يدادعت لك لك و يش و يش لك كي .

دحاو لاثم كي يارب كيتسلا تسين سلاك هتسباو نيدنچ لك يش ،روتوم هب زج سلاك يش كي ،عمجت هكنيا نودب .

نيب هطبار دشاب زين دينك داجيا كي رگيد ،عمجت ياه هطبار سلاك ار ءزج يش تسا هتشاد دوجو لاب ق هك ييايشا اب ار نيشام .

مينك يش تسا داجيا ار نكمم اهنآ سكع رب ، نيشامداجيا اي اب .

دينك نامزمه داجيا دشاب ار نيشام زاين هكنيا يش هكنيا نودب نودب مينك دينك داجيا دنا

( composition )

بيكرت هطبار  : توافت كي اب اما دشاب يم عمجت هطبار هيبش ،بيكرت هطبار دناوت ي من تقو چيه ءزج يش رگيد ترابع هب .

دشاب لك تايح هخرچ زا شيب دناوت يمن ءزج تايح هخرچ ،بيكرت هطبار رد يارب .

دور ،بيكرت يم ه طبار .

د نيب تسا وش يم زا لك هدش فذح يش اب ليكشت نامزمه يش و ديآ نيدنچ زين زج ءايشا ،دوش زا يم يم دوجوب هرجنپ فذح لك لك كي يش ،ديريگب ،يش اب يتقو نامزمه رظن رد هكيروط ار ءزج هب يش زودنيو ،تسا ،دشاب لماع نامزمه هتشاد متسيس تايح دوجو رد هرجنپ ياه لك يش هخرچ كي نودب لاثم مزلتسم : ميمعت هطبار  ك ي فلتخم رابكشخ و ياه ه اگشورف تمسق زا رگيد رد اهنآ يتمسق ياهگژيو رد بسح تشوك رب ار ،هاگشورف يياذغ تمسق داوم كي امش رد .

دينز تاجيزبس يم و مدق اه تكرام هويم .

رپوس دينك يم كي رد هدهاشم هكينامز امش تكرامرپوس دنتس دهديم ميمعت ه يياذغ ناشن هط بار داوم سلاك رگنايب " زا ود يفلتخم كي عاونا اهنيا اما نيب ار تسه " ميمعت ترابع هطبار عقاوم ،دنتسه يياذغ كي (" Type of " ) " زا يضعبرد .) داوم تسا اذغ اهنيا زا همه يعون يعون .

زين دينك هويم يم و اديپ هاگشورف (" Kind of " )" تساهويم زا زا ، يدحات يعون رگيد " بيس يتمسقرد ياه لاثم ترابع يارب ار .( .

.) تسه بيس كي زمرق بيس لاثم يارب ( .

تسا دوش يم هديمان

(inheritance )

تثارو ،بلغا هطبار عون نيا

تاصخ شم .

تسا ثرا نيا ه ن ب دناوت درك يم لابند ناتنيدلاو زا رگيد اب سلاك دزاس يم يندب و يراتفر تاصخشم ندرب ثرا هب دننامه ارگ يش ياه متسيس رد : تثارو زا سلاك رداق ار كي امش هك هك دنتسه دروآ .

يم سلاك دوجوب ديسانشب ار كي ياهراتفر يبتارم هلسلس و تافص لدم نامه كي ،يندب يتسيز و يراتفر تثارو .

دربب ناتدوخ دادجا نآ رد نتفر لااب و بتارم هلسلس كرتشم همه نآ از .

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

ياراد تسا رد هك تسا هتشاذگ يسلاك كارتشا ،بيس وزمرق بيس .

،سلاك هب اه رپوس سلاك كي نآ اب نيب دنك كرتشم يم هدافتسا : ار سلاك اهنآ و ياهراتفر اهراتفر و و رپوس تسا تافص تافص .

د شاب هتشاد .

د وش يا هنومن هدافتسا دناوت نآ يمن هك ياهراتفر و تسا يسلاك تافص زا ات ،يعازتنا دوش هدرب سلاك ثرا هب

: (abstract class )

سلاك كي طسوت دياب يعازتنا يعازتنا سلاك سلاك كي   

اهوگلا و اه هفلوم اه هفلوم

ود هياپ رب اه هفلوم فيرعت نيا رد .

تسا هداد هيارا Szyperski هك تسا يفيرعت اه هفلوم زا مهم فيراعت زا يكي .

دنا هدش نايب ناشيلصا تيصوصخ يطيحم ياه يگتسباو و هدش فيصوت يدادرارق تروص هب ياه طساو اب بيكرت دحاو كي ، يرازفا مرن هفلوم كي .

۱ .

تسا صخشم هدافتسا بيكرت رد يجراخ لماع كي طسوت و هتفاي رارقتسا لقتسم تروص هب دناوتيم ،يرازفا مرن هفلوم كي .

۲ .

دوش

اهنآ .

دنا هداد ه ئ ارا Wills و D'Souza هك تسا يفيرعت تسا .

دنا دوجوم هدرك يرازفا فيرعت مرن ريز هفلوم تروص زا هب هك ار يرگيد هفلومدوخ مهم فيرعت فيرعت رد  اب نآ قيفلت با ناوتيم و تسا هتفاي هعسوت لقتسم تروص هب هك تسا رازفا مرن زا ددجم هدافتسا لباق شخب كي .

۱ يريي غت اهنآ رد ناوتيمن اما داد قفو ناوتيم ار اه هفلوم .

درك ديلوت ار رازفا مرن زا يرتگرزب دحاو اه هفلوم رگيد .

دومن داجيا .

دشاب يحارط زا يتمسق اي و لدم زا يتمسق ،نتم نودب هدش همجرت يدك دناوتيم هفلوم كي .

۲ و هدرك طساو اب يراكمه س لاك رگيدكي كي يتح اب ايشا رگا ، دنا نآ رد هداد .

دو من قلاطا سلاك نآ هب ار هفلوم هك تسا ءايشا زا يا هتسد هئارا Will و D'Souza هك لماش يفيرعت رد هفلوم اما كي Szyperski .

دنتسه هتسباو مه فيرعت هب رد اديدش ناونع ناوتيم دوش هئارا طساو نآ يزاس هدايپ و هدش فيرعت قيقد ياه 

اهوگلا

.

دندرگ يم نايب درجم ريغ تروص هب هك دنتسه هدنوش راركت لئاسم يارب هدنوش راركت ياهراكهار اهوگلا زا هب .

دنتس ين هجوت با ثدح .

دننك اي و يروئت حيرشت اهنت قيمع و دننك تروص هب يم ار .

تفرگ رظن رد لح ار متسيس رظن دروم هلاسم ياهراتخاس و اه اهدركيور مزيناكم نيا هك تسياب دوش يم وگلا كي يزاس هدايپ ناونع هب ناوتيم ار هفلوم تابثا اهوگلا كي تسياب رگيد يم فرط تايصوصخ نيا   : دومن ميسقت ريز هتسد هس هب ناوتيم ار اهوگلا  .

دنزاس يم نيعم ار يرازفا مرن متسيس كي نامزاس و يلك راتخاس هك ،يرامعم ياهوگلا اه نآ نايم طباور نينچمه و متسيس كي ياه هفلوم و اه متسيس ريز راتفر و راتخاس هك ،يحارط ياهوگلا .

دنزاسيم نيعمار هلاسم كي زا يصاخ هنومن و صاخ يسيون همانرب نابز هب طوبرم و هدوب نيياپ حطس رايسب هك ،اه Idiom .

دنتسه كچوك .1

.2

.3

ياه هفلوم ه ب اهوگلا زا هتسد نيرتكيدزن ،يحارط ياهوگلا دسريم رظن هب قوف يدنب هتسد .

دنتسه هب هجوت يرازفا اب مرن  ياهدحاو ا هنآ زا هدافتسا هتخا س رگ شيپ يد زا رد هك ،هفلوم رب ينتبم يرازفا مرن متسيس كي هعسوت و ديلوت دنيآرف رد يحارط ياهوگلا فرط ياه زا .

دنريگ هفلوم اي و يم رارق ددجم هدافتسا هدافتسا دروم لباق رايسب ياه ،دنوش شخب يياسانش يياسانش تسياب تلوهس يمددجم بجوم هدافتسا يحارط لباق ياهوگلا .

دش دهاوخ هدش

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

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

كي دوش .

مينك هدافتسا يم دروخرب فلتخم نآ طيارش رد اب ناگ دنهد دافتسا ددجم هك هدفتسا هعسوت دنك يم هكيروطب اعدا ارگ ،يحارط ياه ،تسا يش هدش يحارط هداد هك صيخشت هنوگنامه .

وگلا زا هدافتسا هك رازفا دناوت دوش مرن يم يم  لح اب هار دروخر نا ب ونع هب ماگنه و .

دندرك ناگدنهد هدافتسا هعسوت ات صاخ دنا لئاسم هدش يزاس لح يارب دنتسم اهنآ اه زا ينامز كينكت نيا دارفا هك سپس .

دنتسه دنا هدش يياه كينكت هتخانش اه بوخ وگلا ياه .

دننك لح ار دوخ لئاسم ودننك هدافتسا تادنتسم نيا زا هباشم لئاسم 

: يحارط ياه وگلا هچخيرات دش ،اهنامت خاس ف وربور شك وا .

ل كشم ،دوخ داد رارق نيا اب لكشم ردناسكلا لح يارب .

يسررب و هعلاطم درك وا .

دروم ياراد بوخ ياهانب هك درك فشك وا .

روطخ دشاب ردناسكلا دناوت يم مان هب هنوگچ ار دزاس دنتسه يم شدوخ كرتشم ي اه رامعم كي نامتخاس نهذ كي هب يارب راب نيلوا تيفيك يارب ناسنا يگژيو كي ياراد هك يناكم يحارط رظن اب يارب و اهوگلا بوخ زا حرط ره زا و اه بوخ هدافتسا كي هك كرهش ياهانب ،اهنابايخ هك درك .

ديمان وگلا ار هباشم ياهيگژيو نياو دنتسه هباشم ياهيگژيو ناوت يم و ،هلئسم نآ لح هار اب .

لح هارمه هار دهدب ندرك يور اديپ اهراب يارب و اهراب ددجم زاين دناوت يم هك نودبدرك تسا هدافتسا لكشم راب اه و هلئسم نويليم كي يارب رگنايب لح هار وگلا نيا ره زا وربور لاوس نيا اب اهنآ .

دندرك دروخرب ردناسگلا ياهراك اب رازفا مرن ناگدنهد هعسوت زا يضعب ۱990 ههد لياوا رد يار ب راهچ ار اما ياهوگلا .

دندرك ناوت يم مان هب يم راك يباتك ايآ دهد يحارط نتشون اب يم باوج ياهوگلا هنيمز حيحص يور نيا رد يدايز ار تروص ريثات هب يدارفا ، هتشر ۱990 نيرتشيب نيا رد ههد زدياسلوو يرامعم لياوا مله رد .

يحارط ياه دروآدوجوب ،نوسبوكاج ،اماگ وگلارگا رازفا مرن هك دندش يحارط ، ياه مان هب رفن

"Design Pattern: Elements of Reusable ObjectOrientedSoftware" ،

زا هدافتسا داجيا يارب هديا باتك نيا اه وگلا يزاسدنتسم يرگيدرادناتسا ياه رد يارب اهنآ تمرف ار .

دنتسه درادناتسا نامز رورم روهشم تمرف هب و كي

Gang of Four

هب دندرك .و دندرب يدنب راك هب هتسد .

دش هدنسيون رازفا ار مرن اهوگلا راهچ يحارط زا عون نيا .

رد ۲۳ ار .

دنتشاد اهوگلا دندرك داهنشيپ اهوگلا يزاس دنتسم

يحارط ياهوگلا يارب يزاس دنتسم بلاق

وگلا یارب دیفم و بوخ مان کی .

دهد یم ماجنا وگلا هک یزیچ هرابرد رصتخم و هاتوک هلمج کی ) دیفم و رصتخم تروص هب لح هار و هلسم فیرعت ( .

دوش یم هتخانش نآ اب وگلا هک یرگید یاه مان وگلا زا یکیفارگ شیامن کی .) دنراد دوجو ( دنراد تکرش وگلا رد هک ئایشا و اه سلاک وگلا مان ) intent ( فده راعتسم مان راتخاس هدنهد لیکشت ءازجا ) Participants ( ) Collaborations ( اهیراکمه ار نا شفیاظو ات دننک یم یراکمه مه اب هدنهد لیکشت یازجا هنوگچ .

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

دنرا د رظن دروم یوگلا اب گیدزن طابترا هک یرگید یحارط یاهوگلا ) Consequences ( جیاتن یزاس هدایپ دک هنومن طبترم یاه وگلا

: يحارط ي اه وگلا يدنب هتسد

نيا رد هك ياه وگلا همه .

:) Creational Pattern ( هدنروآ دوجو هب ياهوگلا ۱ دنتسه ءايشا داجيا ياه شور اب طابترا رد دنريك يم رارق هتسد دنهد يم حرش اهوگلا عون نيا .

:) Structural Patten ( يراتخاس ياهوگلا ۲ دنوش بيكرت مهاب رتگرزب ياهراتخاس رد دنناوت يم اه سلاك و ءايشا هنوگچ طابترا يور اه وگلا عون نيا :) Behavioral Pattern ( يراتفر ياهوگلا ۳ .

دنراد زكرمت رگيدكي اب ءايشا

Creationa l

Factory Method

Abstract Factory

Builder

Prototype

Singleton

Structural

Adapter

Bridge

Composite

Decorator

Flyweight

Façade

Proxy

Behavioral

Interpreter

Template Method

Chain of Responsibility

Command

Iterator

Mediator

Memento

Observer

State

Strategy

Visitor

Factory Method

GOF intent: Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

و اهلااك ياه نآ سلاك زا رد هك يياه تسا هنومن يناكم هك تسا هناخراك يسلاك .

تسا صخشم

Factory

كي نآ يوغل ،يحارط ينعم ياهوگلا .

دنك يم داجيا ،دوش يم لاسرا نآ زا اقيقد ثحب يارب رد هك و ، ، ) هناخراك ( دوش يم

Factory

موهفم ديلوت يتلاوصحم يياهرتماراپ هب هجوت اب ار رگيد هب هاگشورف هك تقو ره ميراد كاشوپ هاگشورف كي ام هك دينك روصت ديناوت يم ناتدوخ رد تينهذ كي داجيا يارب ههب هجوت اب هدننك ديلوت و دنك يم لاسرا

(Factory) ه

دننك ديلوت هب ار نآ يماسا .

ديشاب هتشاد زاين يصاخ سابل نا همه هدهننك دهيلوت لاهثم نهيا رد .

دهنك يم لاسرا هاگشورف هب و هدرك ديلوت ار اه سابل نآ هدش لاسرا يماسا دروم سابل ) ه اگشورف رظن دروم كاشوپ تسيل ( هدش لاسرا ياهرتماراپ هب هجوت اب هك تسا ام

Factory

سلاك .

دههههههنك يههههههم لاههههههسرا يرتههههههشم هههههههب و دههههههنك يمدههههههيلوتار ) رظندروههههههم يههههههش ( رههههههظن

.

سلاك ئيش هكنيا لاوم تيلوئسم عم لك نود ) و ب ميناوتيم هدننك تسا وگلا هدافتسا طابترا نيا اب ام .

دنك يم ناهنپ ( تنيلاك .

مينك

رد ) Abstract (

هدافتسا يعازتنا ار نآ هدننك سلاك زا اي و و هدافتسا داجيا ار يارب نآ ءايشا مينك داجيا صخشم طساو كي اب هكلب يگديچيپ ار دنك يمن ئيش داجيا وگلا كي نيا قيقد ار يعقاو دشاب تاع لاطا كيتاتسا نآ دناوت يم ساسا رب

Factory Method

دتم نيا و دتسرف يم سلاك سلاك .

دراپس يم نيا زا

Factory Method

كيتاتسا يدتم هب ار هب ار يعقاو يتاعلاطا سلاك لاومعم داجيا تنيلاك رگا لصا هك تس وگلا ا نيا نيا رد وگلا .

دوب نيا يايازم دهاوخن زا .

دنادرگرب اه تنيلاك دك تنيلاك رد رييغت يارب هب شود زا اه سلاكريز داجيا تيلوئسم هك نوچ دوش يم ار اه يزاس يزاين تياعر چيه يبوخ هدايپ دهد زا خر كي مادك يرييغت هب

SOLID

.

هك ديريگ يم ءايشا هناگجنپ دوش يم داجيا لوصا هتشادرب ميمصت هوحن رد زا

DIP

تنيلاك 

UML

مارگايد .

دينك يم هدهاشم ار

Factory M ethod

يوگلا

UML

مارگايد ريز لكش رد

: دنتسه ليذ حرش هب وگلا نيا رد ناگدننك تكرش يياهن ه دننك ياه يزاس هدافتسا، هدايپ تنيلاك ميناوت يم ام .

اجنيا دشاب رد وگلا .

دنك يم نيا زا هدافتسا جراخ .

نآ يسلاك مينك زا رد تنيلاك يدتم ره ره داجيا

Iproduct

هك تسا اي

main

طساو طساو دتم كي

Iproduct

دناوت يم لاثم تسا زا زاين بسح رب يفلتخم هدايپ سلاك يتسياب راك نيا يارب ، تسا .

دوش

Iproduct

طساو قتشم IProduct زا يزاس طساو هدايپ نيا

ConcreteProduct

كي زا

ConcreteProduct

) يزاس ساسا رب طساو روطنامه .

دنوش يم نيا زاس لاسرا هدايپ شيارب .

دنك يم رتماراپ فيرعت قيرط زا ار

Factory Method

تاعلاطا نيا .

دنك يم داجيا هده ع رب طقف ار هفيظو نيا .

رادومن تسا نيا هدش رد ام قتشم و تسا طساو

Icreator

ار هك تسا حيحص يطساو سلاك Icreator يتفايرد تاعلاطا نيا طساو زاس زا هك هدايپ ميا هدهع رب تايلمع نيا ميتفگ هك هتشاذگ

ConcreteCreator

   

Factory Method

ياه هدياف  ميوش يمن اه

Concrete Class

ميقتسم تخاس ريگرد همانرب دك رد زين اه

Subclass

فيرعت بيترت نيدب .

دريگ يم مظن و هدش عمج اج كي رد مه اب طبترم ياه سلاك تخاس دنيارف .

دوش يم ماجنا رت هداس و رت نشور

Factory Method

ياه بيع  .

مينك فيرعت

Creator

زا

Subclass

كي هك ميروبجم ديدج

Concrete Class

ره فيرعت يارب

)) Abstract Factory)

اب يلصا توافت ( .

دوش يم ركذ دك رد اميقتسم دوش هدافتسا دياب

Creator

مادك زا هكنيا

Abstract Factory

GOF Intent: Provide an interface for creating families of related or dependent objects without specifying their concrete classes

يياه هنومنداجيا نامز، مينك يمدروخرب عبات يدايزدادعتاب سلاك يدايزدادعتاب هديچيپ متسيس كيرد يداي زدادعتاب هاگنآدشاب هتشاد برخمو هدنزاس عباوتلاقتسمدوخ يارب يسلاكرهدشابرارقرگا سلاك نيازا يارب يلح هار Abstract Factory يوگلا،دنهد يم ماجناار هباشمراك كي يگمه هك ميتسهوربور عبات .

تسا Factory مان هب لقتسم سلاك كي هبءايشاداجيارايتخاذيفنتاب لكشم نيا لح اميقتسم دياب ، Creator Concrete هك تسا نيا Factory Method Pattern Factory Method يلصا توافت .

درادن دوجو لكشم نيا Abstract Factory رد .

دوش ياه ركذ بيع .

تسا نيمه Abstract Factory زا دك رد و

ياهدتم signature implement ار اهنآ .

دوش يم هتخانش زين KIT مان هب Abstract Factory Pattern هك تسا abstract سلاك اه Concrete Factory و اي interface تسا هدش كي فيرعت Abstract Factory نآ رد اه Object تخاس .

دنيامن يم   Concrete Factory رد هداوناخ مه ياه Product .

همه دندرگ يم Abstract Factory Pattern عمتجم و يزاس هدايپ هداوناخ نآ هب رد طوبرم چيه هب و ،دنريگ يم ميراد رارق راك و هدافتسا رس اه Abstract Product دروم همانرب رد و Abstract Factory اه Concrete Class زا كي مادك هك اب اهنت هلاسم همانرب نيا ياهدك ريگرد رد هجو .

ميوش يمن

: دهد يم ناشن ار

Abstract Factory

راتخاس ريز لكش

Abstract Factory

ياه هدياف و مان رد هب

Client

يريثات هكنيا بيترت نيدب و دوش يم .

تشاد زكرمتم دهاوخن هطوبرم

Factory

رد

Product

يگتسبا ه

Product

و فلتخم يراذگمان ياه

Type

و يزاس يزاس هدايپ هدايپ هوحن نودب ،داد رييغت ار همانرب هدافتسا دروم

Concrete Factory

.

دشاب هتشاد ناوت اه يم شخب يتحار رياس هب دركلمع

Abstract

ريغ و لاعف مه زا اب و هدافتسا دنراد ،دشاب رارق مه هتشاد رانك رد دوجو همه هداوناخره هداوناخ ره يارب لوصحم ياه

Product

كي هك ) مادكچيه زا دنك اي شيب يم ،همه هك يدراوم رد نيمضت

Factory

اي ( .

دنوش يم لاعف   

Abstract

.

،هزات

Product

دوش يم كي طقف ندش اه

Concrete Factory

هفاضا همه اب هك رييغت هب تسا رجنم نيا

Abstract Factory

هلاسم نيا هك

Abstract Factory

بيع  دنك رييغت دياب گرزب بيع

Factory instance

كي هب طقف .

لومعم دوش روطب

Application

يم ماجنا يياهرتماراپ ره طسوت

Abstract Factory

اريز .

دنتسه

Singleton

.

دراد دروم لاومعم رد اه ديفم زاين

Concrete Factory

ياه

Factory

ره كينكت زا  لاومعم بسانم

Concrete Factory

باختنا   رارق

Abstract Factory

دوخ رد .

دشاب فذح

abstract class

دياب طقف و لاك

Connection Services

ار بسانم

Concrete Factory

دشاب interface ديابن باختنا دتم

Abstract Factory

يزاس هدايپ تروص نيا ناوت رد سلاك هك دوش يم هنوگنيا لااب لاثم دروم رد كينكت نيا .

يم داد لامعا .

ددرگ يم لقتنم

Connection Factory

سلاك هب نآ

getConnection Factory

دتم و دوش يم

Builder

GOF Intent: Separate the construction of a complex object from its representation so that the same construction process can create different representations.

ار

Product

نآ تخاس لحارم و تسا هديچيپ

Product

كي نتخاس شراك هك تسا يسلاك

Builder

.

دراد يم هگن دوخ رد .

تسا هدش ليكشت يفلتخم لحارم زا

Product

.

تخاس هك مينك تسا دوخ هب يم صوصخم هدافتسا

Builder Builder

زا يتقو لاومعم ياراد

Product

ره ؟مينك هدافتسا

Builder Pattern

زا ميناوت يم تقو هچ .

توافتم ياه ندش هتخاس هوحن اب اما ،ناسكي يازجا اب ميشاب هتشاد يياه

Object

هك يتقو .

دشاب لقتسم نآ هدنهد ليكشت يازجا زا

Complex Object Factory

و

Builder

توافت كي تخاس متيروگلا هك يتقو .

دنك يم داجيا ار هداوناخ كي زا فلتخم ياه سلاك هعومجم هك تسا يسلاك

Factory

.

دنك يم صخشم ار

Complex Product

كي تخاس لحارم هك تسا يسلاك

Builder

: تسا نينچ

Builder Design Pattern

مارگايد

ناو يح هب يناويح زا ازجا نيا ) تخاس هوحن ( بيكرت و مرف اما .

دنتسه هريغ و ندب و مد و رس ياراد تاناويح .

دنك يم توافت رگيد

Builder

ياه هدياف ناهنپ ) قوف لاثم رد

Kid

دننام (

Direct

o

r

سلاك ديد زا

Product

ره تخاس تايئزج دوش يم ثعاب .

ددرگ .

دنك يم ادج

Product

نآ دوخ زا ار

Product

كي تخاس هوحن .

ددرگ يم رت هداس نآ لرتنك بيترت نيدب و دوش يم زكرمتم هديچيپ سلاك كي تخاس دنيارف     

Prototype

GOF Intent: Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype

: نآ زا فده هك تسا

Creational

ياهوگلا زا يكي يفن م ريثات همانرب يياراك يور رب رگيد يا هنومن داجيا هك يماگنه ( نآ زا يا هلحو داجيا ياج هب دوجوم يسلاك يزاس هباشم ) دشاب هتشاد : دراد دربراك ريز دراوم رد لاثم ناونع هب خساپ نتشاد نيا ت يت لاح قو نيا .

دوش رد اديپ ) ديدج يا هلاسم شنكارت خساپ ماجنا ات هب دريگ زاين تروص شنكارت نيدنچ ميجح يسيباتيد زا تسا زاين هك ينامز نودب ( دوش .

تسا ماجنا بولطم اهنآ رايسب يور رب لصاح يتايلمع ياه هداد ديهاوخب زا يپك دياش عون كي دمآ تسدب هيهت اي و و هب د دروكر شاب ( هدش تاعلاطا هدناوخ نيا زا لياف زا يا هنومن تاعلاطا هب زاين نيا تسا ،سلاك نكمم زا يا هنومن تايلمع ره تخاس ماجنا .

دنك يم داجيا يدايز رابرس ،لياف ماگنه يارب .

رد دراد دوش يم دوجو هدوزفا تاعلاطا ندرك دول و يلياف سلاك رد امش لخاد و تاعلاطا ) دروكر ديدج يا هنومن تخاس

ديدج ئش كي داجيا يارب ئش كي ) داجيا ياجب ( ندرك يپك موهفم .

تسا هياپ هدش رب

Prototype

يپك ديدج ئش هك يحارط يروطب يوگلا تسا يزاس هنومن زا ديدج ئش كي داجيا يارب

Abstract factory

اي

Factory Method

.

دنك يم هدافتسا يحارط ديدج يوگلا ئش كي   كي داجيا زا

Abstract

ئش

ای

كي ندرك يپك هكنيا

Factory Method Prototype

زا يقيق د يحارط تاعلاطا درادن يوگلا يموزل رگيد وگلا فرط نيا زا ليلدب تسا نآ رتلااب تعرس

Prototype

.

ميشاب هتشاد يحارط سلاك نآ يوگلا يلخاد تيزم يحارط زا ،دنراد هدافتسا ياه وگلا اما دراد يرتشيب تعرس ئش ديدج هنومن اب ار ييارگ ئش كي ئش زا تاناكما ديدج زا هنومن رتشيب كي هدافتسا داجيا يارب تيزم

factory

و تسا رت هداس راتخاس 

نآ تاصخشم قباطم و ون زا لاماك

Object

.

مينك هيهت يپك كي دوجوم

Object

كي ،دوش هدافتسا سلاك تخاس يارب كي زا ميناوتب هك تسا بوخ يهاگ اما

new

زا هك يماگنه .

دوش يم هتخاس سلاك  : ديريگب رظن رد ار ريز لاثم رتشيب كرد يارب  درآ اجنيا و هيه ت غر م رد مخت .

لاقتر پ زا اب يگمه يضعب و و دنتسه سانانآ مه اب دننام يضعب لصا و رد دنوش نآ يور زا يپك كي ادتبا اه كيك همه يارب و هك يم يياه نيئزت كيك بيس .

ميزپب اب كيك يضعب اما ددع .

دنا دنچ هدش ميهاوخ ليكشت يم دينك هريغ و ضرف ريش و ميشاب هتشاد يلصا .

ميئامن كيك نيئزت زا

Prototype

هاوخلد هب ار نآ كي طقف تسا سپس رت و تحار مينك

: تسا لكش نيدب

Pattern

نيا مارگايد

Prototype

ياه هدياف نتخاس instant لباق ديدج سلاك كي Prototype فيرعت اب هك دهد يم .

ار ناكما ديامن نيا فيرعت زاس همانرب كيمانياد هب تروصب  .

درك هدافتسا Prototype زا ناوت يم يرورضريغ و دايز ياه SubClass داجيا زا زيهرپ يارب  بتارم Clone هلسلس ، يلك روطب ناوت يم Prototype Repository .

دومن Factory Method زا ار بسانم Prototype نيزگياج نآ ياج هب ار Prototype و دومن فذح ار ناوت يم اه Creator .

دومن 

Singleton

GOF Intent: Ensure a class only has one instance, and provide a global point of access to it.

.

مينك هدافتسا Singleton يوگلا زا دياب ،تخاس نآ زا ناوتب .

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

كي يارب دناوت دوش .

ميراد يم زاين طقف ءايشا امش زا هرادا نآ رد داجيا نآ زا هنومن كي دياب هنومن اي دشاب طقف كي هك هب هتشاد ديراد طقف ار و يسلاك طقف امش ام COM1 تروپ هك هك دنراد زا دينك دوجو هنومن ضرف كي يدايز طقف ءايشا دناوت لاح ؟دينك ....

و يم دشاب لح كي طق ف ام سلاك .

زا دنك هكنيا دودحم زا نانيمطا ار سلاك ينعي كي زا .

تسا هنومن هدش داجيا داجيا ات دور راك يم نيا راك يارب هب هك نيا تسا يارب ييوگلا وگلا نيا .

Singleton Pattern تسا هدش داجيا هنومن

: يزاسدايپ هوحن  رد كيتاتسا رييغتم كي زا هدافتسا دوش داجيا نآ زا هنومن كي دناوت يم طقف هك يسلاك داجيا يارب هار نيرتناسآ يم True رادقم ار كيتاتسا رييغتم ام دوش يم داجيا سلاك نيا زا هك يا هنومن نيلوا زا هنومن كي دشاب .

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

دش دهاوخن داجيا يش نآ زا يديدج هنومن تروص نيا ريغ رد دش دهاوخ داجيا يش

Singleton

يزاس هدايپ

 : ديهد ماجنا ارگ ئش يسيون همانرب نابز كي تاناكما زا هدافتسا اب ار ريز راك ود دياب راك نيا يارب ندرك

private

رادقم لاثم يارب اب لاثم ،ئش هب یارب ( يگتسباو دشاب هتشادن نودب ( دشاب دوجو هتشاد امش رظن

static

دروم سلاك سلاک حطس .

دشاب زا رد ) ئش داجیا دتم دحاو كي ئش كي ( یزاس سلاك

(constructor

هشيمه هنومن نآ ناکما يتشگزاب .

تخاس دوش يم

instant

كي طقف صاخ سلاك كي زا هك ميشاب نئمطم ميهاوخ يم يهاگ يمن يريگولج رگيد ياه

instant

تخاس زا شور نيا اما .

دشاب يرسارس ريغتم كي زا هدافتسا دناوت يم هار كي هئارا ار راك نيا ماجنا هوحن لاثم و مارگايد همادارد .

دريگ .

دنك هدهع هب ار هفيظو نيا سلاك نآ دوخ هك تسا نيا رتهب هار ميهديم

public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() { } } public static Singleton getInstance() { return instance; }

زگره رگا يتح .

دوش يم هتخاس Lazy تلاح نيا هب .

دوش زين هتخاس نآ instance ،تسا دوخ ، JVM رد .

دريگن سلاك رارق ندش Load يبايتسد دروم و ماگنه دشابن قوف نآ لاثم هب رد يزاين زاين دروم : راب تسا نيلوا نينچ يارب نآ instance يزاس هدايپ يتقو .

دوش يم هك درك يراك دوش يم هتفگ Instantiation

public class Singleton {

 

private static Singleton instance = null; private Singleton() { } public static synchronized Singleton getInstance() { if (instance == null) instance = new Singleton(); } return instance; }

هتكن دنچ

 ود طسوت نامزمه روطب getInstance دتم هك دراد دوجو ناكما نيا Lazy Instantiation تلاح رد هژاوديلك هلاسم نيا زا يريگولج يارب .

دوش هتخاس instant كي زا شيب و دوش هدناوخارف thread .

درادن دوجو لوا شور رد لكشم نيا .

تسا هدش هفاضا دتم هب synchronized .1

روتسد اب ناوت يم زين تلاح نيا رد يتح .2

override تروص نيدب clone Singleton clonedObject = (Singleton) obj.clone(); دتم دياب دوش يريگولج مه راك نيا زا هكنيا يارب .

درك داجيا سلاك زا يپك كي : دوش } public Object clone() throws CloneNotSupportedException { throw new CloneNotSupportedException(); تلاح زا نآ constructor دياب ،دومن فيرعت SubClass ،دنناوت يم اه SubClass نوچ .

كي Singleton دوش يمن هيصوت راك نيا هتبلا .

زا ناوتب هك دشاب مزلا رگا دنك رييغت protected هب .

۳ private .

دنيامن ضقن ار Singleton بيترت نيدب و دنروآ رد public تلاح هب و دننك override ار Constructor راب كي زا شيب ندش serialized زا سپ رگا نوچ ،دنوش serialized ديابن اه Singleton .

4 .

تشاد ميهاوخ نآ زا instance كي زا شيب تروص نآ رد ،دنوش deseriaized

Singleton

ياه هدياف  هب اه يسرتسد مامت ناوت يم ،تسا هدش

Encapsulate

سلاك دوخ رد

Singleton instance

هك اجنآ زا .

دومن لرتنك ار نآ .

دنك يم يريگولج همانرب

name space

ندش غولش زا

Global

ريغتم ياج هب

Singleton

زا هدافتسا .

داد رييغت ار نآ ناوت يم يتحار هب ،دوش رظن فرص ،سلاك كي ندوب

Singleton

زا ليلد ره هب رگا .

دومن لرتنك همانرب رد ار سلاك كي ياه

Instance

دادعت ناوت يم شور نيمه هب

Singleton

بيع  .

دراد يدايز نافلاخم

pattern

اه نيا ،

singleton

موهفم ندز رود يارب يياه هار دوجو ليلد هب

Design Pattern

رگيد رد

Singleton

زا هدافتسا  .

دننك هدافتسا

Singleton

زا دنناوت يم

Prototype

و

Abstract Factory

,

Builder

.

دنتسه

Singleton

بلغا

Façade

ياه

Pattern

ياه

Object

GOF Intent:

Adapter design pattern

Convert the interface of the class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.

ياه هنومن يعقاو يايند رد .

دوب هك تسا دهاوخن ييوگلا لكشم )

Adapter Pattern

دايز وگلا نيا كرد رطاخ ، لدبم نيمه هب ،هدنهد و دراد قفو ( دوجو زاسراگزاس وگلا نيا زا يوگلا يدايز .

يلو تسا تسا ه دش ريز لكش هداد هب ناشن يا هخاش ريوصت ود پچ ياراد تمس ؟ديهد امش

laptop

رتويپماك رد هك تسا يلكش هب يم ماجنا ار يراك هچ هك تسا لحم دينك هدش نيارد ضرف بصن دوخ و ديريگب راويد پات پل رد زا رظن هك رد ار يقرب هدافتسا ريز ياه لكش زيرپ يارب امش  

قرب رد .

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

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

،لدبم دشاب امش رارق عقاو هتشاد اقيقد اه ا رگ هد نريگ يش ياه سيورس هدنهد هك قفو دنهد ؟تسچ يم رييغت ارگ يا يش هنوگ هدنهد هب ار قفو كي سيفرتنيا يلو .

كي دوب اهنآ يعقاو .

ي دنهد ايند يم زا لاثم ماجنا ار كي لااب يهباشم لاثم راك .

دنراد ارنآ راظتنا : ارگ يش ياه دنهد قفو    هب هب طوبر م تبس ن ار هك ديدج يتوافتم ياه سلاك سيفرتنيا زا هك ي دنا هناخباتك هدش اب دراد يحارط يا زاين هنوگ هك هب ديراد ديدج يرازفا ياه مرن متسيس سلاك اما كي ،دنك امش راك هك تسا .

دنراد يلبق دينك ضرف ناگدنشورف سيفرتنيا

سلاك دوجو ،ا ه يا م هنوگ اب ه متسيس متسيس هب ك را زا دينك اب يسيون هك ديهد مادك چيه ناگدنشورف زاب يم يا هنوگ رييغت هب يا رييغت نودب سيفرتنيا هك هك ار دوجوم هنوگ درادن هب ديسيونب ار يرازفا ديدج دوجو س يرت لاك مرن ياه كي متسيس سلاك هنيزه ديناوت مك يم اي ديناوت لح .

امش يم دشاب هارايآ .

هتشاد دهد امش اما .

دشاب ماجنا لكشم نيا يناوخمه لح ديدج ار يارب ياه هتشاد دوخ راك يناوخمه متسيس .

دراد راظتنا دوجوم متسيس هك دهدب رييغت 

تسا

Client

راظتنا دروم هچنآ اب سلاك نآ

interface

اما .

دوش يناوخارف .

ديآ يم

Client

راك طسوت هب Adapter سلاك هك كي تسا هك اجنيا تسا .

مزلا دراد هاگ توافت  .

تسا

Wrapper

،

Pattern

نيا رگيد مان  ؟مينك هدافتسا

Adapter design pattern

زا تقو هچ  .

تسين قبطنم ،تسا زاين دروم هچنآ اب سلاك نآ

interface

اما ،مينك هدافتسا يسلاك زا ميهاوخ يم هك يتقو لاامتحا ياه

interface

.

دهد يم اب طبترمان هئارا

Client

ياه يارب سلاك اهنآ زا اب تسا مزلا هك ديشاب هچراپكي

interface

هتشاد

reusable

كي ،

Adapter

سلاك تلاح كي نيا ديهاوخ رد .

دنك يم يتقو راك فلتخم .1

.2

متسيس م تسيس زا رد هك رظن ار يياه دروم تساوخرد سلاك يارب و و دنك دهد .

يم يم دشاب لمع رييغت سلاك هطساو نآ يلكش يارب كي هب ارجا دننام ار اهنآ ) هدنهد و دنك و كرد لباق قفو يم هك ،زاس راگزاس تفايرد دسر (

Adapter

يم دوجوم دنك يم لاسرا ناگدنشورف 

ار رظن تسا رد طسوت هدش فيرعت

Math1

سيفرتنيا تنيلاك سلاك هك ار يلمع ، رد دننك هك سيفرتنيا كي تسا اب

Maxvalue

يلو دهد يم مان ماجنا هب ار هك يم يلمع تنيلاك ار

Max

يزاس مان هدايپ هب ار يدتم تنيلاك سيفرتنيا نيا سلاك هك لااب ياه لكش سلاك ياراد سلاك

Math2

سيفرتنيا هتساوخ اقيقد و يلو تسا .

هدش دنهد يزاس رد يلو .

هنومن دراد يارب زاين يمن هدايپ ماجنا دراد

Imp2

سلاك ؟ديراد يداهنشيپ هچ لكشم نيا لح يارب .

رگيد يم راب فيرعت رس .

دنك ديدج يروط ار سلاك

Max

يناوخارف لمع ار كي ينعي يلو

Imp2

.

.

دنك سلاك مينك يم زا يم يزاس هدافتسا هدايپ

Maxvalue (Adapter

دسانش لمع .

يم دوش يم ) لدبم تنيلاك سلاك يناوخارف كي نآ زا هك ام ار لكشم نيا يسيفرتنيا لح هك يتقو هك مينك يم يارب مينك يراذگ  

: تسا لكش نيدب

Pattern

نيا مارگايد

Adapter

عاونا

دوش يم هدايپ لكش ود هب

Adapter َ Object Adapter

Class Adapter

 رد .

دنك يم هدايپ ار تلاح رد اما .

Client

راظتنا دروم دتم هك دراد دوجو

Adapter

ناونع هب سلاك كي تلاح ود ره رد دنك يم يناوخارف ار

Adaptee

سلاك زا يدتم افرص سلاك نيا

Object Adapter

تلاح .

ديامن

extends

ار

Adaptee

تسا مزلا

Adapter

سلاك ،

Class Adapter

: تسا هدهاشم لباق يزاس هدايپ عون ود نيا توافت ريز ياهرادومن رد

Object Adapter

و

Class Adapter

هسياقم

Class Adapter

رد اما ،دنوش يم لامعا زين

Adaptee Object Adapter

تيزم ياه Subclass  يارب Object Adapter .

تسين هنوگنيا

Class Adapter

ياه تيزم  رد راك .

تسين نيا زاين .

دراد دروم دوجو مه

Adaptee Adaptee

ياهدتم هب يرگيد رگ هراشا و ندرك

override

دوش يم ديلوت ناكما

Class Adapter

تسين تلاح رد يندش

Object Adapter object

كي طقف

Class Adapter

رد

Bridge

GOF Intent: Decouple an abstraction from its implementation so that the two can vary independently Handle/Body

: رگيد مان دسر يم نهذ هب هك يهار نيرت هداس ،دراد يزاس هدايپ عون نيدنچ

Class

كي هك يتقو لاومعم و

Interface

اي

Abstract Class

ميريگب رظن رد شياه كي تروص هب ار يلصا

Class SubClass

ينعي .

تسا

inheritance

ناونعب ار نآ فلتخم ياه

Implementation

يرگيد رد دياب يكي رد رييغت ره و دراد يگتسباو اه

Implementation

اب اميقتسم

Abstract

تلاح نيا رد .

دوش ظاحل .

دنراد فلتخم عاونا يهاگ ،دنوش هتفرگ رظنرد دياب

Abstract

رد هك يياه

Operation

دوخ نمض رد .

دشاب زاسراك دناوت يم

Bridge Pattern

لكشم ود نيا عفر يارب .

مينكيم لابند ار يلاثم نآ دربراك ياج و

Bridge Pattern

رتهب كرد يارب

: لاثم  اب اه نآ ندرك شوماخ و نشور اما .

دنراد ار دوخ صخشم دركراك كي ره .

هريغ و رلوك و نويزيولت لثم هناخ لياسو .

دراد يياه تهابش مه

: ميشاب هتشاد يحارط نينچ هك تسا نيا هار كي تلاح نيا رد

: دراد يتلاكشم شور نيا  .

دومن داجيا ديدج سلاك

switch

ياهشور دادعت هب دياب ديدج هليسو ره يازا هب .

درك فيرعت ار هطوبرم سلاك اه هليسو همه يارب دياب ديدج

Switch

ره يازا هب فلتخم ياه شور ديدج

Subclass

فيرعت ياجب هك تسا نيا دسرب رظن هب تسا نكمم هك يرگيد شور .

مينك هدايپ سلاك دوخ رد هناگادج ياهدتم تروصب ار

Switch

.

دوب ميهاوخ اه سلاك كت كت رييغت هب مزلم ديدج

switch

ره يازا هب مه شور نيا رد     .

تسا

Bridge Pattern

زا هدافتسا رگيد هار

لبق لاثم رد Bridge Design Pattern زا هدافتسا

: تسا تروص نيدب

Bridge Pattern

راتخاس

Composite

GOF Intent: Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.

.

دور يم راكب يتخرد ياهراتخاس يزاس هدايپ يارب

Composite Pattern

 : ديهاوخ يم هك دينك هدافتسا

Composite Pattern

زا يتقو دييامن هدايپ ار ءزج هب لك بتارم هلسلس .1

راتفر ناسكي ،ود ره اب و دوشن لئاق اه ياه

Object Object

بيكرت و

Object

يتخرد راتخاس رد دناوت يم هك دوش يم هتفگ يا كي نيب يتوافت

Object Client

هب

Composite

ديهاوخ يم .2

يلك روطب .

دريذپب دوخ ريز رد ار يرگيد ديامن 

رارق نآ ريز دناوت يمن يرگيد

Object

و دراد رارق تخرد نيياپ رد هک تسا

Leaf

نآ فلاخ رب .

دريگ

دوخ ار ند ب بات ك دياش كي ،ديهد دوخ رارق تسد اب يسررب سپس ره و ت سا هدش ليكشت هحفص اه دروم هد .

ارنآ دينيبب زا باتك و ...

دييامن و كي مشچ هك هجوت ،اپ دينك دوخ ،تسد يم ندب هب دننام ديا يش هدهاشم،دينك هتسشن نيدنچ نآ يلدنص ندز زا يبيكرت قرو هب يور هكيروطنامه تروص هب ار عورش و ديرادرب

My Computer

تسيل ،دين ك كيلك نوكيآ اهاويرد زا يور يكي .

تسا يور هدش ،دوش ليكشت يم هداد رطس نيدنچ ناشن ديراد زا فارگاراپ رتويپماكرد ره هك و فارگراپ يياهاويرد نيدنچ ،دينك زا يم هحفص كيلك هدهاشم ياه دياب هنومن يش شيازفا ،دينك نآ زا مادك ،دشاب مت سيس كيلك رد ره زين اه رد بكرم .

folder

رگيد تسا بكرم ءايشا زا هدش اي يكي هنوگنيا يور ليكشت هداس دادعت يش سپس لياف هچ ره اي نيدنچ و ،دوش و دنك يم هداد تيريدم و ناشن اويرد يرادهگن نآ ار ياه ءايشا

folder

نيا هنوگچ و اه

folder

لماش تسا نيدنچ نكمم زا

folder

يش كي نآ ديديد دوخ هك دينك هكيروطنامه هك لياف يم ،لااب دنادب يم هئ ارا يلح هار هچ و ديراد يداهنشيپ هچ لكشم نيا لح يارب امش .

دش دهاوخ رت هديچيپ متسيس ،دباي ؟دينك 

متسيس Folder .

يرگ يد نيدب ل يا دن اوت ياف هك ميراد هفلوم يم مينك لياف لماش يحارط و داجيا همانرب كي Folder ياه مان ميهاوخ هب يم يلصا هك يش دنناوت كي .

يمن درك اه هئارا لياف ار هكيلاح ينوگانوگ رد ياه دينك ود ام ،دنوش ضرف زودنيو ليكشت يحارط لاثم ناوت رگيد يم يارب متسيس لياف اه لاثم .

ميهد رد Folder نيا .

يم دنك اي يارب همادا لاثم يزاس .

اه لياف دنشاب كي اب ار راك هيبش ار زا دنناوت متسيس زودنيو يم لياف اه زا دشاب يياهدتم لماش هك ،مينك فيرعت هلئسم .

دهد رد يم دوجوم ناشن ار يش ود لصاح ره يارب يحارط كرتشم ريز لكش سيفرتنيا .

دنراد كي دوجو ،هك يش دشاب ود ره تروص رد هك هدافتسا اب و .

دنك داجيا ار FileSystemComponent ءايشا زا هعومجم كي دناوت يم Clinet يحارط نيا اب FileSystemComponents زا يفلتخم ياه هنومن DirComponent ، يش addComponent ، دتمزا هب ،دنك جارختسا ار ءايشا نيا زا مادك ره زياس دهاوخب Clinet هكيماگنه .

دنك هفاضا DirComponent هبار هزادنا يارب هك يتايلمع و هبساحم هوحن زا ديابن Client دنك يناوخارف ار getComponentSize دتم يگداس FileComponent يش ود ره اب client دروم نيا رد .

دشاب هاگآ دريگ يم تروص هفلوم كي زياس يريگ .

دنك يم راتفر تروص كي هب DirComponent و

FileComponent

يشود ره اب

getComponentSize

كرتشم دتم دروم رد

Clinet

و

addComponent

دننام يياهدتم يناوخارف يارب Clinet اما .

دراد ار يناسكي راتفر

DirComponent

يارب طقف اهدتم نيا هكنوچ ،دهد صيخشت رگيدمه زا ار يش ود هك دراد زاين نيا يناوخارف يارب ار رظن دروم يش عون ات دراد زاين

client

ليلد نيمه هب .

تسا هدش فيرعت

getComponent DirComponent

و يحارط نيا دوبهب يارب .

دهد يم ر .

دراد راك و رس

DirComponent

زا هنومن كي اب هك دوش نئمطم ات دنك كچ اهدتم ييغت تروص هچ هب ار يحارط ،دشاب هتشادن دوجو يش ود نيب توافت صيخشت هب يزاين هك يا هنوگب

يش صيخشت هب .

دنك راتفر تروص كي ار

addComponent

يزاين

clinet

هك ميهد رييغت يا هنوگب ار يحارط ميهاوخ يم ام هب يش ود ره اب

,

دشاب و

getComponent

هتشادن ياهدتم

FileComponent

و ،هك ميهد رييغت تروص

DirComponent

بكرم نيا هب ميناوت يم ار يحارط نيا يمن ماجنا يارب رييغت

abstract

سلاك ماجنا ار ضرف ار دوخ شيپ يصاخ صاخ يزاس راك يزاس كي و هدايپ هب تسه هدايپ ات كي دنك و يم ،ميهد ددجم لاقتنا

FileSystemComponent

ار

FileSystemComponent

كرتشم

FileComponent

رطاخب يسيونزاب ار اهدتم اهدتم نيا يارب سيفرتنيا ضرف و كرتشم شيپ ميهد يزاس سيفرتنيا ماجنا هب اهدتم هدايپ نيا

DirComponent

سلاك اما .

.

.

ميهد دهد دهد 

يزاس عون اب هدايپ لرتنك ديدج كي هب زاين دتم ياراد كي FileSystemComponent clinet رگيد و ميهاوخ ،تسا addComponent يم هك دينك ردپ روصت سلاك .

نوچ و getComponent درادن ،دوش دتم يم ود لح ام يلبق لكشم نيا ياهدتم يارب يناوخارف راك ضرف يارب نيا اب شيپ يش هب ار دتم نيا اب .

مي ريگ ،ميدرك يم رظن هدافتسا تروصنيا رد دتم هلئسم رب نيا رد ،مينك يارب هبلغ ضرف يارب هفاضا DirComponent سلاك شيپ هك يزاس يشور اما هدايپ كي ،مينك و لح مينك ار يم دوخ هب ار removeComponent مان هفاضا زين لكشم FileComponent ردپ ميتسناوت ام لااب يحارط يم لاثم همه و اب ميراد دننامه client هديچيپ اي و .

.

مينك يش ديريگب كي هيزجت هديدان هك ميتك يم ، partwhole ار درفنم ءايشا هدافتسا وگلا نيا hierarchy زجو زا يعقاوم لك ءايشا و DirComponent بكرم رد زا ام ءايشا .

دراد بتارم نيب مان توافت Composite هلسلس كي دشاب هب رداق ارنآ يوگلا ميهاوخ client لااب دنكراتفر ناسكي تروصب بكرم راتخاس رد دوجوم ءايشا

: تسا ريز تروص هب وگلا نيا مارگايد سلاك

.

لاثم رد

FileComponent

سلاک دننام تسين دنزرف یاراد هک تسا یسلاک

Leaf

سلاک لااب مارگاید رد

ياهراتفر سلاك .

لااب رد سلاك ددرگ نيا رد يم هك يياهيگژيو .

دشاب فيرعت يم لاثم رد دنتسه DirComponent دننام دنزرف ياراد اب FileSystemComponent سلاك هك نامه يسلاك Composite يياه هفلوم هب سلاك طوبرم FileSystemComponent .

تسا دش هراشا

 

Decorator

GOF Intent: Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

ارجا نامز رد

Object

.

كي ياه تيلباق هب دوش يم هدافتسا ، ) ندرك

Object Decorate

نآ ياه ( ندوزفا يارب

Decorator Pattern instance

رياس زا لقتسم ، (

Run Time

)  نامز رد

Subclassing

هك توافت نيا اب .

دشاب

Subclassing

نيزگياج دناوت يم

Decorator

.

ارجا نامز رد

Decorator

اما ،دوش يم لامعا

Design

 .

تسا

Pattern

نيا رگيد مان

Wrapper

صاخ ص خش كي يارب بسانم هيده كي لابند هب ،دينك يم هاگن يكي يكي ار اه هفرغ ،ديوش يم هاگشورف دراو .

نات از رارق يم يارب يكي زا ارنآ ات دعب دييوگ دهد يم ناكما هدنشورف .

دوش يم هئارا و تروص يم ديهد امش يم يارب ليوحت هيده هدنشورف نداد رارق هب يارب رد مامت دينك راك .

يم داهنشيپ دنابسچب نآ و دينك يور لگ و ار دينك يم فلتخم يم باختنا هخاش كي باختنا ينئيزت ارنآ ياه دايز هبعج ار رظن ،وداك دروم ذغاك هبعج رد نآ ساوسو هدنشورف و .

امش .

نديچيپ تمحز دنك اب نيئزت .

ديتسه و وداك دينك و باختنا امش هيده ار اهنآ نداد تسا ناموت Z لگ هخاش تميقو تسا ناموت Y هبعج تميق ،تسا .

دينك ناموت X هدرك تخادرپ ار باختنا هك يا هيده ناموت X+Y+Z عمج تميق رس دياب ديوگ امش فر ط زا اما .

ديا هدرك ميدقت دوخ رظن دروم صخش هب ار هيده و ديا هدرك مامت ار دوخ ،ديرخ امش دينك ضرف لاح ني ا .

تسا يارب لياسو لياسو رياس هدش اب و هتفرگ رظن رد هاگشورف شرافس متسيس يحارط يارب امش تكرش ،هاگشورف ينيئزت لااك كي ياه يارب هبعج ار لك زا يدايز تميق عاونا هكدشاب ياراد نينچمه هتشادار نيا و تس تيلباق ا دياب ييوداك متسيس ددعتم .

تسا فلتخم نيمه ياهلااك نيلوئسم ياراد ياهلااك هاگشرف نيئزت ؟دشابدناوت يم تروص هچ هب هلئسم نيا يارب امش يحارط .

دنك هبساحم ينيئزت

: دشاب ريز تروص هب دناوت يم هلئسم نيا يارب يحارط كي هنومن ۱ كي هبعج اب .

دوش ،ديرخ ۱ عون هداد رگيد هيده تشگ رب ينيئزت كيرگا ديرخ .

يلااك دوش چيه هداد نودب تشگرب ار هيده تميق كي دتم ،يرتشم طسوت ،نآ رگا ،هك تميق لك تميق و ،دوش داجيا ۱ عون هبعج اب ۱ عون و دوش دوش لمع تروص داجيا سلاك نيا نآ هب ينعي دوخ زا هيده زا يا هنومن ،دوش يراديرخ  

ار نكمم كش ي ب ياه ،هك بيكرت ديشاب زا مادك هتشاد ره سلاك امش و اهدص .

تشاد ،دشاب فلتخم هبعج و هيده اههد ياراد دياش دهاوخ هداس رب رد راك ار كي يدايز يارب هنيزه ،دينك ،اه فيرعت سلاكزا هاگشورف هناگادج مادك ره رگا سلاك رد ،تلاح نيا كي رييغت و رد اما تروصب تيريدم

(button

) اه همكد زا يضعب فارطا هك ديهد يم حيجرت ،ديتسه همانرب (U I) سيفرتنيا يحارط لاح رد   نيا ناتدو خ يوگلا ديهاوخ بوخ يم لح هار .

درادن و ار تيلباق يحارط ؟ ديهد كي نيا اما يم .

،ديا هدرك ماجنا داد هئارا هدافتسا يشور لااب هچ هلئسم امش هب ار ود هك راك ره يياه همكد نياامش .

اما دينك .

دشاب هفاضا اه كزان يگنر همكد هب ار راون كي تيلباق يارب ناوت يم ار يفلتخم ياه يحارط  .

مينك هفاضا يش يكي هب ار ديدج راتفر كي ميهاوخ يم ام ،لااب لاثم ود ره رد .

تسا

Decorator

،دهد يم هزاجا وگلا نيا .

مينك هفاضا يش هبار راتفر نيا تثارو زا هدافتسا نودب ميهاوخ يم يلو .

مينك هفاضا يش كي هب كيمانياد تروصب و تثارو زا هدافتسا نودب ار راتفر كي ات

: تسا ريز تروصب وگلا نيا سلاك رادومن

لااب رادومن رد

ConcreteComponent

، نامه ،مينك هفاضا نآ هب ار يديدج راتفر ميهاوخ يم هك يا يش هفاضا

ConcreteComponent

يش هب ار ديدج راتفر هك يا يش و .) مود لاثم رد همكد يش ( دشاب يم ،دیدج راتفر نیا اما .) مود لاثم رد كزان راون ( دوب دهاوخ ،اه

ConcreteDecorator

زا يكي .

دنك يم زا هنوم را ن كی زين اجنیا .

میداد رارق هبعج لخاد رد ار هیده ام هکيتروص نامه هب اقيقد ؟دوش یم هفاضا هنوگچ ک نآ یور رب هدنريگرب رد سلاک ميهد یم هزاجا و ميهد یم رارق رگید سلاک لخاد رد ار رظن دروم سلاک .

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

دنک ار لك رادقم ،ميهاوخ يم دينك ضرف .

ديرخ يم لگ كي و هبعج كي ،هيده كي امش ،لوا لاثم رد : مينك هبساحم

Decorator

يوگلااب تميق هبساحم يارب تميق مان هب دتم كي سلاك نيا .

مينك يم داجيا ۱ هيده سلاك زا يش كي ادتبا رد .

دراد دوخ   

راك يم نيمه رارق نآ زين ام لخاد سپ رد .

دهد ار يم هدش رارق داجيا نآ لخاد هيده يش رد و ار هيده مينك هدنشورف يم داجيا ار و ،دنك ۱ يم هبعج زا باختنا يا ار هنومن هبعج اضرف كي يرتشم ينعي،مينك .

مينك يم نيئزت هبعج اب ار هيده و .

سپس يم ار ميهد لگ زا هنومن كي ،مينك يم ار راك نيمه زين ام .

دوش بصن هيده .

يور مينك رب لگ يم كي نيئزت ،تساوخ نآ اب ار يم هيدهو يرتشم .

مينك رگارخآ يم رد داجيا

رد يش .

هيده مي نك يارب ار هبساحم تم يق ،تمي ق دتم ار دتم تميق ادتبا هبعج و .

هطقن رد ينعي دنك ، يم تسين نيا .

رد دياب مينك ام يم يناوخارف هدننك ار نيئزت سپ يناوخارف هبعج يش .

كي دسرپ ينعي يم هدننك هدنشورف نيئزت زا ،نيرت ار يتخادرپ ينوريبزا ار يدعب هيده يش نوچ تميق هطقن يش نيا رد نيا .

.

دنك مينك يم غلبم تميق يرتشم دتم ام يم يناوخارف يناوخارف ار لاح ادتبا لگ يلصا هبعج ين يم سپس عيدهد يم تشگرب ۳0000 ار ينعيدهديم تشگرب لك ار عومجم عومجم و دنك تشگرب و يم .

دنك ار هفاضا دوخ يم تميق هفاضا هدش هداد ،هيده ).

تسا

ConcreteComponent

يش طسوت هدش هداد تشگرب تميق هب ار كي دوخ تشگرب رادقم هب ار دوخ رادقم لگ زين رخآ رد .

هكلب تميق ۳۱000 ( .

۳۳000 ينعي دهد

: يعقاو يايند رد دربراك هنومن ود  و يزوس شتآ ،تقرس هلمج زا اه Option هيقب و دراد هياپ تميق كي هك .

ليبموتا هندب هميب تميق هبساحم .

دنوش يم هدوزفا هياپ هميب هب Decorator ناونعب هريغ  .

دوش یم هدافتسا دایز اه I/O Stream یارب Pattern نیا زا اه كرو میرف و یسیون همانرب یاه نابز رد .

نآ هب یزاس هدرشف تيلباق ندوزفا یارب GzipStrem اب FileStream ندومن Wrap اب لاثم 

Flyweight

GOF Intent: Use sharing to support large numbers of fine-grained objects efficiently.

اهن ت و دنتسه رگيدكي هيبش تاهج يرايسب زا و دنراد يناسكي تيهام هك ميراد

Object

دروم هظفاح ياضف شهاك ثعاب و دوش يم هدافتسا طيارش نيا رد

Flyweight

.

يدايز دادعت يهاگ دنراد مه اب يكدنا ياه توافت .

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

تسا ناسكي اهنآ تاصخشم هيقب و تسا توافتم ناش ام بلاق رد ار ناسكي تاصخشم اب رتكاراك يدايز دادعت هك دنتسه اه ا ،دوش هدافتسا تسا نكمم نتم فلتخم ياهاج رد فرح كي .

Word processor

رگيد فورعم لاثم دنراذگ يم شيامن هب اه نوتس و رطس و طوطخ .

دراد ناسكي ياه يگژيو و لكش اج همه رد

ياج هب هك ديوگ يم ر

Flyweight Pattern

هگن ار نآ هب رگ هراشا فرح دوخ يرادهگن د دياب فورح همه اجنيا رد تسا يهيدب .

ميراد .

دنوش يرادهگن

Pool

كي

: دراد دوجو يديلك موهفم ود اجنيا رد

رامش هب نآ يتاذ تاصخشم و دنتسه تباث هك Object زا يياهزيچ زا تسا ترابع Intrinsic state .

دنيآ يم يم توافت رگيد Object هب Object کي زا و دنتسين تباث هك يياهزيچ لماش Extrinsic state .

دننك نآ رد Intrinsic state نامه اي ناسکي ياه هصخشم هك يا Object زا تسا ترابع Flyweight .

دريگ يم رارق هدافتسا دروم Share تروصب و دوش يم هدايپ .

تسا سكوب شزرو تاحلاطصا زا و نزو کبس ينعم هب تغل رد Flyeweight

يتيزي و تراك .

،نامزاس دشاب يم كي دنمراك دنمراك رازه ره يارب دنچ اب تسا گرزب رارق رايسب هك ديتسه نامزاس كي همانرب ،رظن كي دروم يحارط نامزاس لوئسم .

دنك امش پاچ ،دينك ريز روصتايو لكش دننام تيزيو تراك مان هب سلاك كي .

تسا هداس رايسب يحارط كي ،دنك روطخ دناوت يم نهذ هب هك يحارط نيلوا پاچ يار ب مه پاچ دتم كي و مينك يم لقتنم سلاك هب ،دنراد رارق تراك رد هك ار يتافصو مينك يم فيرعت .

مينك يم فيرعت تراك 

دنچ دياب امش هب يم هج وت ايآ اب امش ،يهاگآ ينعي يلو نيا .

اب ،دينك دنك .

داجيا فرصم تسا visitCard يكي سلاك زا هنومن كي دنمراك ار متسيس دارفا مامت زا يدايز يارب عبانم سردآ و دناوت يم تكرش ره نيا مان و ،هك .

؟هن اي ديهدب ماجنا ءازا دنك دوش هب دياب يم امش هجوتم تروص تراك نيا رد داجيا visitCard يشرازه راتخاس دوخ يحارط رد يرييغت ديهاوخ هدش هداس سلاك رادومن كي دناوت يم ،ريز لكش .

ديتسه نتم شزادرپ همانرب كي يحارط .

دشاب لوئسم همانرب امش نيا اي يارب  

ميناو زا كی ل ماش ت ،د یم ،دشاب یريگب رتکاراک هدشن رظن فارگراپ ره رد كی تنوف صخشم و لااب ،دوب رييغت رتکاراک یارب كی .

یحارط دهاوخ اب ار همانرب فارگراپ تسا تنوف نیا یش دنس رگا رد .

زا هنومن نیدنچ رتکاراک دنس لماش مينک كی .

كی رگنایامن Docchar یناوخارف Docchar سلاک یشزا زا هنومن SetFont ره دتم هحفص درک ره دهاوخ ،تسا هدافتسا هحفص دوخ container نیدنچ لماش هک تنوف دنس دنس كی فرصم رد ینعی متسيس ،دوب دهاوخ زا ار یدایز ؟ديهد یم DocChar یشاه هظفاح رييغت ،هک تروص ميشاب هچ هب دص ار لماش دوخ زين یحارط نآ و دوب هتشاد DocChar یش ،هظفاح دهاوخ اه رازه فرصم LineOfTextad یش تسا شهاک نکمم یارب یا امش .

هحفص درک نیدنچ دنچ دهاوخ ميهاوخ نآ یسررب هب هک .

تسا Flyweight یوگلا ،لااب هلئسم ود ره لح یارب بوخ و دیدناک لح هار كی فرص م هب رجنم هک دوب سلاک كی زا دح زا شيب یاه هنومن ديلوت ،لااب هلئسم ود ره رد ام لکشم .

تخادرپ .

دوش یم عبانم دایز  

: تسا تاعلاطا عون ۲ لماش يش كي مامت تسا يارب ت باث هك دنتسه نادنمراك يتاعلاطا مامت يارب ،تاعلاطا لوا لاثم رد عون نيا سردآ و : (

Intrinsic Information

) يلخاد تكرش مان ،لاثم يارب .

تسا تباث سلاك تاعلاطا كي ياه ۱ هنومن هب رد يا دن هنومن مراك زا هك تمس و دنتسه مان يتاعلاطا ،لاثم يارب .

،تاعلاطا دزاس يم عون نيا زيامتم : ( Extrinsic Information رگيدمه زا ار ءايشا ينعي ،دنك ) يجراخ يم قرف تاعلاطا رگيد يا ۲ هنومن .

لوا لاثم تاعلاطا شهاك نيا اهنآ و مينك يراذگ لقتنم كارتشا سلاك هب اب ار زا جراخ اه هب هنومن ،ار يجراخ دادعت و تاعلاطا ،مينك ،هك تفايرد تسا اهدتم نيا

Flyweight

يدورو ياه يوگلا رتماراپ داهنشيپ تروص هب ار .

ميهد

تسا ريز تروص هبوگلا نيا سلاك رادومن

نوچ .

دنتسه سلاك كي يراذگ كارتشا هب ياه هنومن اه ConcreteFlyweight زا مادك ره لااب رادومن رد نيا لح يارب .

دننك داجيا ارنآ زا يا هنومن ميقتسم روطب ديابن اه Client دنا هدش هتشاذگ كارتشا هب ءايشا س لاك كي زا يا هنومن ايآ هك دنادب دياب سلاك نيا .

مينك يم داجيا ار FlyweightFactory سلاك ،لكشم .

هن اي تسا هدش داجيا كي طسو ت فلتخم ياه سلاك زا ءايشا نيا هك مينك يم يرادهگن ار هدش داجيا ءايشا زا يتسيل ،راك نيا يارب فيرعت،سلاك كي ،رتكاراك ره يارب دوخ لكشم لح يارب ام ۲ لاثم رد .

دنوش يم زيامتم مه زا ديلك تفص ار ري ز سلاك هنومن يارب .

داد دنهاوخ شيامن هك تسا يرتكاراك ، نامهاه سلاك زا مادك ره ديلك .

مينك يم يا هنومن دهاوخب

Client

هك يتقو و ،مينك يم هريخذ

Hashtable

كي رد ار سلاك ره ديلك ،ديريگب رظن رد .

هن اي دراد دوجو

Hashtable

رد ديلك نيا ايآ هك دنك يم يسررب هب سلاك نيا ، دزاسب ار شرظن دروم سلاك زا

(reference

) يعجرم تروصنيا ريغ رد ،دنك يم داجيا رظن دروم سلاك زا يا هنومن ،دشاب هتشادن وجو رگا دهد يم تشگرب ارنآ  

class CharacterFactory { private Hashtable characters = new Hashtable(); public Character GetCharacter(char key) { Character character = characters[key] as Character; if (character == null) { switch (key) { case 'A': character = new CharacterA(); break; case 'B': character = new CharacterB(); break; //...

case 'Z': character = new CharacterZ(); break; } characters.Add(key, character); } return character; } }

یم Singleton Pattern و نآ نيب ییاه تهابش Flyweight Factory

Multitone Pattern

یزاس هدايپ هب رتشيب هجوت اب  ییاهديلک جوز تروصب اه هنومن Multiton رد .

دنمان یم Multiton ار تسد نیا زا یاه سلاک .

مينيب .

دوش یم هدنادرگزاب رظانتم هنومن هدش تفایرد Key ساسا رب و دنوش یم یرادهگن .

دراد دوجو Application

Multiton و Singleton

لک رد هنومن كی طقف هطوبرم سلاک زا هک دوش یم نيمضت Singleton

توافت

رد  .

دراد دوجو Instance كی اهنت Key ره یارب هک دوش یم نيمضت Multiton Pattern رد

Façade

GOF Intent: Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher level interface that makes the subsystem easier to use.

سلاك ك ي رد ار متسيس كي يگديچيپ دنهاوخ يم ناگدنهد هعسوت هك دوش يم هدافتسا ياه متسيس رد هچيرد يوگلا يگدي چيپ ،يجنايم و طساو ناونع هب اه سلاك اي و سلاك نيا زا هدافتسا اب و دننك يفخم ) س لاك دنچ عقاوم .

دنهد يضعب رد ( شهاك ار متسيس ريز نيدن تسا رارق هك ار يا سيورس ات دننك يراكمه رگيدمه اب اه سلاك نيا و دشاب سلاك دنچ يواح يمتسيس ريز رگا چ تسا نكمم سلاك ره .

دراد دوجو متسيس ريز نآ هب طساو داجيا رد يكسير ،دننيبب كارادت ار دهد هئارا متسيس نيا هب .

د نشاب هتشاد ار سلاك ره زا يياه هنومن هب مايپ لاسرا يياناوت دياب رگيد ياه متسيس ريز .

دشاب هتشاد تايلمع هدنهد هئارا متسيس ريز كي ياه سلاك رد رييغت رگا و ديآ يم دوجو هب اه متسيس ريز يناوخارف ار اه سلاك نيا تايلمع هك ميتسه يياه متسيس ريز رد اه ناكم نيب يوق لاصتا كي ،بيترت يمامت يبايدر دنمزاين ،ديايب دوجوب سيورس دنا هدرك ه ب سلاك نيا و دنك يم داجيا متسيس ريز هب ار يطساو هك ،دشاب يم façade سلاك داجيا ،تيعضو نيا رب هبلغ شور كي سلاك يزاس ه دايپ رد رييغت ،بيترت نيا هب .

دنك يم لمع رگيد ياه متسيس ريز اب رظن دروم متسيسريز هدنيامن ناونع تسا مز لا طقف ،دريگب تروص اه سلاك رد يرييغت رگا و .

دراد رگيد ي اه متسيس ريز رب يدودحم رثا متسيسريز ياه .

تسا هدش لاسرا façade سلاك زا يياه هنومن هب يمايپ ،اهنآ رد هك دوش اديپ رگيد ياه متسيس ريز رد يطاقن

هدافتسا اب

Subsystem

اي

library

دنچ زا هدش هداس .

ددرگ يم ناهنپ ربراك ديد زا اه

Subsystem interface

كي زا تسا ترابع

Façade

عقاورد يناوخارف و يزاس هدايپ ينورد ياه يگديچيپ نآ زا  دوخ زا ار ربراك ي اه يگتسباو و دنك يم لمع

Subsystem

نآ

Entry point

ناونعب عقاو رد

Façade

درب يم نيب زا نآ يزاس هدايپ و

Subsystem

 .

دشخب يم مظن ار

Subsystem

رد دوجوم ياهدتم يناوخارف نينچمه

Façade

ناتدوخ ا مش لوا تلاح رد .

ديا هدش باختنا گرزب اتبسن هژورپ كي يارب هژورپ ريدم ناونع هب امش دينك روصت نيا هوحن ار رد رد .

د ياب ديريگ ب تيلوئس تلاح مو د ود امش م تلاح رد .

ليوحت فياظو امش لااح .

و دوش دينك .

مود تسا ار اهنآ يم يم تلاح هب تساوخزاب باختنا تساوخزاب هك façade هدش يارب هتبلا سلاك رذگاو هورگ وا فياظو نينچمه رس زا ؟تسا ناونع ناونع طقف مك هب و امش و تلاح هب دييوگب دينك رفن فياظو اهنآ رارقرب هب ار طابترا هژورپ دارفا دارفا كت كت كتاب كت تيلوئسمديراد ديراد هفيظو امش هفيظو تلاح كي ليوحت مود تلاحرد يارب و دينك .

دينادب يم رگيدكي ملاعا وا هب اب ار ار دارفا هدش نيا رذگاو طابترا ياه يراك نيا رد مجح هورگ و يگديچيپ رس .

ميدرك تل اح هدافتسا مادك رد دينك façade هسياقم يوگلا زا ام مهاب عقاو 

دياب يا هب ه را يرتش تكرش راكنيا م نآ زا يارب رد يكي هك هب زاين ديتسه امش دروم .

يكينورتكلا دنك هدافتسا دراوم و هدافتسا هاگشورف يرابتعا هوحن كي ياه ديهاوخ يحارط تراك زا لوئسم دوخ امش ديرخ يمو دينك يم ديريگب غلبم هعجارم رظن تخادرپ يرابتعا رد مود يارب تراك لاثم دشاب هدننك يارب رداق رداص يارب دوخ همانرب لخاد رد هك ار رظن دروم ياه سلاك و راتخاس تقو چيه رظن دروم تكرش .

دهد هئارا امش عفن هب هرا چ سپ همانرب ياه نيب مايپ .

دش يجنايم امش و دهاوخ ناونع هفاضا هب ار زين امش façade همانرب سلاك دنهد يم رارق دوخ نايرتشم سلاك ه ه ن ب تسا ار رظن رظندروم دروم تكرش مايپ ،امش عفن هب هب خساپ هن نيا لاسرا نوچ و .

دهد نتفرگ يمن ياربزين هئارا نآ امش و هب دينك اقيقد يم دننك لاسرا يم هدافتسا سلاك نيا هب اهراكنيا هب كي، اقيقد رايتخا رظن رد تخادرپ دروم و متسيس تكرش يحارط يگديچيپ façade ناشدوخ سلاك تخادرپ راك نيا اب نوچ ،امش زا هدافتسا متسيس ؟تسيچراك همانرب و امش ار دوخ .

دنك يم لاسرا امش هب و تفايرد نآ زا ار خساپ و دنك يم لاسرا يلصا 

هچيرد يوگلا سلاك رادومن

Proxy

GOF Intent: Provide a surrogate or placeholder for another object to control access to it.

دنك لرتنك ار

Object Object

اب راك يارب هب يسرتسد دناوت يم هك تسا

Client Client

و دريگ يم رارق يلصا

Object

و يلصا

Object

نيب طساو كي

Proxy

.

ديامن هفاضا نآ هب يرگيد تاناكما اي و .

Client

ديامن روبع نيب

Proxy Proxy

رگيد ترابع هب زا تسا راچان يلصا  .

تسا

Surrogate

نآ رگيد مان رد ( تسا راوشد عبنم كي هب يسرتسد يليلد ره هب هك دراد دربراك يدراوم رد

Proxy

يحارط يوگلا يسكور پ ئش كي زا يلصا ئش ياج هب تلااح نيا رد ، ) همانرب يدنك اي ئش ندوب ميجح اي ندوبن سرتسد و دنا هدرك يزاس هدايپ ار طبار كي ) يسكورپ مه و يلصا ئش سلاك مه ( سلاك ود ره هك دوش يم هدافتسا يلصا ئش هب طا بترا يسكورپ ئش و دنك يم رارقرب طابترا يسكورپ ئش اب يلصا ئش اب طابترا ياج هب همانرب .

دنك يم يزاس هيبش اي و دنك يم رارقرب ار  

هدنيامن هتشاد نيا زاين داجيا .

يلصا

Object

يلصا

Object

نا هب زا هب ،يلصا ام دروم ش

Object

هك دوشيم دنيارف

Proxy

قيرط زا ديشاب هب اعقاو داجيا نايامن نتخادنا اجنا وگلا ريخات نيا يسرتسد امش يارب هكيماگنه يا هدنيامن هدنيامن نيا ،تسا .

ليكو تسين رب هب روبجم اب تردق تقيقح هكنيا اموزل و رد ( نمض ديشاب دهديم )، رارق دربيم هتشادن امش هرهب سرتسد يبوخ هب يسرتسد : دينك اي هدنيامن هنيزه يانعم هب

Proxy

) يلصا

Object

فلاخ هژاو رب ( يلصا تقد رد و دنكيم يمتسيس

Object

ريز رادومن هب .

هب داجيا ديربب ار نا ياه

Resource

ميقتسم شيپ ديشاب تروص ار رظن

: زا دنترابع وگلا نيا مهم رصانع  .

دننكيم يزاس هدايپ ار نا ود ره

Proxy

و

RealSubject

هك يسيفرتنيا

ISubject

 .

دريگيم رارق نارگيد سرتسد رد

Proxy

قيرط زا " شدركلمع " هك يلصا سلاك

RealSubject

 هب يسرتسد حطس دناوتيم سلاك نيا .

دنكيم لرتنك و داجيا .

ار

RealSubject

دريگب زين دوخ رايتخا رد هك يسلاك

Proxy

ار

RealSubject

 ار نا

RealSubject

هب اي دوشيم شزادرپ

Proxy

قيرط زا هك رظن دروم تساوخرد

Request

.

دنكيم

delegate

: تسا تروص نيدب

Pattern

نيا رادومن

: زا دنترابع

Proxy Pattern

ياهدربراك يخرب  )

Protection Proxy

( اي

Object

هب زاجمريغ يسرتسد لرتنك  رد ار

API

ياه يگديچيپ ناوت )

Virtual Proxy

) يم .

هديچيپ ياه

API

.

تشاذگ

Client

رايتخا اب رد راك يرت يارب

Abstract

هداس طساو و درك هيلا كي داجيا تيريدم

Proxy

 )

Remote Proxy

( اه

Web Service

هلمج زا

Remote Resouces

يارب طساو داجيا  اي عاجرا تاعفد دادعت تيريدم اي ،نآ دك هب ندز تسد نودب

Object

كي

Smart Refernce

ندومن

Thread Safe

هظفاح رد ندش

Load

Interpreter

GOF Intent: Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in thelanguage.

Pattern

كي اي

regular Expression

كي ميهاوخب هك دوش يم هدافتسا ينامز

Interpreter Pattern

زا .

مييامن ريسفت ار يا هتشر دروم (

Expression

) ) ريسفت ( صاخ دراوم رد طقف و درادن يمومع هدافتسا اه

Pattern

رياس فلاخ رب

Pattern

نيا .

دريگ يم رارق هدافتسا : : لاثم ديريگب رظن رد ار قيرفت و عمج رگلمع ود اب يتابساحم ياه ترابع

( 10 + 7) – (6 – 1) + 5

: دوب دهاوخ هنوگنيا رمارگ لاثم نيا رد Expression = NumberExpression | AddExpression | SubtractExpression AddExpression = Expression + Expression SubtractExpression = Expression – Expression

: دومن يهدنامزاس تخرد بلاق رد و درك ليدبت Postfix تلاح هب ار نآ ناوت يم ترابع هبساحم يارب 

(10 + 7) – (6 – 1) + 5 —–> 10 7 + 6 1 – – 5 +

.

تسا

Interpreter Pattern

يزاس هدايپ تامدقم دش ماجنا لاثم نيا رد هك يياهراك

Interpreter Design Pattern

لامعا لحارم

.

دينك فيرعت رمارگ نابز يارب .

دينك

map

سلاك كي هب ار رمارگ ياه شخب زا كي ره .

دييامن يهدنامزاس

Composite Pattern

هباشم يراتخاس رد ار اه سلاك .

دييامن يزاس هدايپ ار

interpret(Context

) دتم    

: تسا تروص نيدب

Pattern

نيا رادومن

Interpreter Design Pattern

يازجا دنك يم فيرعت

Intepret

مان اب دتم كي

AbstractExpression

۱ يتخرد راتخاس رد .

دادعا هلمج زا صخشم رادقم اب يازجا يارب رظانتم سلاك .

دنتسه تخرد ياه گرب اه

TerminalExpression TerminalExpression

۲ نيا

Composite

راتخاسرد .

نابز دعاوق اي اهرگلمع زا كي ره يارب رظانتم سلاك .

دنتسه

Composite NonterminalExpression

ياه سلاك اه نيا ۳ ،

Composite Pattern

دوخ رد ار هدش كي ام لاثم رد .

Interpret

دراد رارق ترابع و يلصا ترابع موزل تروصرد هك تسا يسلاك

Interpret

دتم سرتسد رد

Global Context

4 تروصب و دنك يم

Encapsulate

.

تسا هداس

String

: دراد هفيظو ود

Client

ياه سلاك لماش تخرد نيا .

دوش .

تسا

Interpret

دياب هك ترابع ره يارب تخرد يهدنامزاس و تخاس

NonterminalExpression

و

TerminalExpression Interpret

دتم يناوخارف 5  

: ۱ هتكن  رد رمارگ هدعاق ره اريز .

تسا هداس رمارگ شرتسگ و رييغت Interpreter Pattern زا هدافتسا اب .

داد رييغت ار رمارگ ناوت يم اهنآ نومن Extend اي اهنآ رييغت اب و تسا هدش هدايپ سلاك كي : ۲ هتكن  و تيريدم ،ميجح و هديچيپ ياه رمارگ يارب Interpreter Pattern زا هدافتسا اما .

دنك يم راوشد ار همانرب Maintanance

Template Method GOF Intent: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.

سلاك فيرعت نيا هب زا زاين هك يسلاك اهنت اه ريز سلاك هب ريز دراد هك يگتسب يا ،نآ هنوگ هب تايئزج ،مينك زا يخرب فيرعت يلو رتلااب ميناد سلاك يم رد ار ار متيروگلا يلك كي راتخاس .

يلك نيا دنشاب راتخاس هك تسا نيا لكشم ميهاوخ هتشاد يم دوخ .

دوش يم يصاصتخا قتشم تايئزج هب و دومن نييعت .

ردپ دنيامن سلاك نييعت رد دوخ ار ار اهدتم هلحرم ره يارجا تايئزج يلك ،ردپ يلاوت سلاك ،ناوت رد يم Template Method Design Pattern هدش نييعت لاور زا تيعبت نمض هك داد ناكما طسوت اه Subclass

.

روصت دراد دنناو ت دوجو يمن دروم ياچ ود .

نودب نيا دينك نيب ار يم يگدنز زين رگيد لمع رگيد ريز ياه يضعب تهابش بيترت هب و .

دننك دراوم تسا روصت بلغا هوهق نيئفاك امش .

نودب ار يگدنز دنناوت يمن مدرم را ود تسا ره يلصا هباشم ” هدنهد ابيرقت ليكشتءزج اهنآ يود ره يلو تخاس .

يضعب دننك شور : هوهق تخاس لمعلاوتسد .

ديناشوج يم ار بآ يرادقم .

۱ .

دشكب مد ات دزير يم هدش هدناشوج بآ رد هوهق رادقم .

۲ .

د زير يم ناجنف رد ار هوهف .

۳ .

دينك يم هفاضا نآ هب ريش اي و ركش يرادقم .

4 : ي اچ تخاس لمعلاروتسد .

ديناشوج يم ار بآ يرادقم .

۱ .

دشكب مد ات دزير يم هدش هدناشوج بآ رد كشخ ياچ رادقم .

۲ .

د زير يم ناجنف رد ار ياچ .

۳ .

دينك يم هفاضا نآ هب ركش يرادقم .

4

تشاد م يهاوخ ريز تروص هب ار يياه سلاك ميسيونب هوهق و ياچ هيهت يارب يا همانرب ميهاوخب رگا .

.

دنتسه يم ام .

رگيدكي ميهد هباشم رييغت ار ام ا .

دوش هطوبرم يم ياه يزاس سلاك اقيقد boilWater دوخ هدايپ ريز رد يحارط هياپ دتم سلاك نيا .

دياب رد دنك ام و pourInCup سپ هباشم يم .

لمع دنا لاماك هدش دتم توافتم دتم راركت ود .

ميهد تروص ود اهدك هب هك زا دوش يم يضعب هدهاشم نوچ تسا لااب سلاك هابتشا ام ود هدهاشم يحارط اب سپ رييغت سلاك ريز ره تروص هب ار دوخ يحارط رد prepareRecipe دتم ميناوت نوچ دوش يم يزاس هدايپ

هك م يوش يم هجوتم مينك هجوت رگا ؟درك نيا زا رتهب ار : يحارط ميرب يم دوش راك يمن هب ار اما تسا يناسكي بوخ يحارط متيروگلا دروم كي ودره لااب يحارط هيهت يارب بآ ندناشوج .1

هدش هديشوج بآ هب هوهق اي ياچ ندرك هفاضا .

۲ ناجنف رد هدما تسد هب ينديشون نتخير .

۳ ينديشون هب رظن دروم ينشاچ ندرك هفاضا .

4 .

مينك يزاس هدايپ هياپ سلاك رد ار Recipe prepare دتم تارييغت يمك اب ميناوت يم ام سپ

.

ميهد ري يغت ريز تروص هب ار يحارط و مينك لقتنم هياپ سلاك هب لماك روطب ار دتم نيا ميناوت يم لااح سپ

مان هب ميداد ماجنا هلاسم نيا لح يارب ام هك يراك .

ميتفاي تسد لا هديا هدهاشم ناونع هب اب مود يوگلادشاب ميناوت يم و يم ار وگلا نيا يراذگمان ليلد .

دوش يم تسا دتم ينديشون كي

prepareRecipe

هكنيا كي هيهت متيروگلا لماش لاثم لوا نيارد .

مينك هنومن كرد يارب .

يحارط كي هب هلاسم نيا يارب ام لااح هتخانش

Templatemethod

يوگلا هياپ دور سلاك يم راك زا

prepareRecipe

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

كي دننك رد ار يزاس متيروگلا هدايپ ار كي ماجنا متيروگلا زا لحارم

Template method

هلحرم دنچ اي كي اه سلاكريز .

د وش يم زا رد يا اهد هعوم تم زا جم تروص يضعب هك يم هتفرگ رظن رد هياپ .

هب ار دوش متيروگلا يم كي هتفرگ بلاق رظن رد كي دتم .

تسا كي متيروگلا ناونع هب كي لحارم يارب نيا بلاق زا ما سلاك رد

abstract

تروص هب اهدتم زا يضعب و دوش كي دك داجيا ره .

،وگلا دنك يم نيا رد فيرعت ام فده لحارم دوش يم يم يزاس يزاس هدايپ هدايپ اه هياپ سلاك سلاك ريز رد و نامه دوش

: UML رادومن

و .

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

تسا هلحرم

Abstract

سلاك كي ( تسا كي

Abstract AbstractClass

دتم كي سلاك نآ رد

primitiveOperation

هك دتم هتشاد .

دو دوجو ش

ConcerteClass

يزاس هدايپ فلتخم ياه سلاك شور كي رد زا شيب دناوتب دناوت متيروگلا يم ميدرك لحارم زا هدهاشم يضعب هك لااب لاثم دهد يم رد خر هكيروطنامه ينامز تلاح .

دش نيا .

دهاوخ دشاب

Chain Of Responsibility GOF Intent: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.

: ت سا ناربراك يارب ريز حرش هب ينابيتشپ حطس هس ياراد تكرش نيا .

ديريگب رظن رد ار يتنرتنيا هدنهد سيورس كي دوش يم يگديسر ...

و ناربراك روبع هملك ندرك شومارف دننام ناربراك ييادتبا تلاكشم هب حطس نيا رد : ۱ حطس .

دوش يم هداد عاجرا ۲ حطس هورگ هب لح يارب لكشم .

دننك لح ار رظن دروم لكشم دنناوتن ۱ حطس هورگ ياضعا رگا : ۲ حطس رد .

دوش يم هداد عاجرا ۳ حطس هورگ هب لح .

يارب دوش يم لكشم .

هتشاذگ دننك لح يرتشم اب ار رظن لكشم دروم لحم لكشم رد دنناوتن تاقلام رارق زين ۲ كي هورگ لكشم ياضعا لح رگا يارب : ۳ حطس حطس نيا ار زا صخشم هئارا اقيقد تساوخرد يلو هب .

هك دنهد دنشاب خساپ هدش هتشاد ار هئارا نيا تساوخ سناش دياب رد اه هب اه هورگ هورگ همه زا اما مادك .

داد ره تسا دهاوخ لكشم كي ات چيه دوش هك يم دراد هداد دوجو سناش زين نيا ناكما ۱ نيا حطس .

دوش ميت يم هب ادتبا هداد ۳ لااب و ۲ لاثم رد ياهميت نكمم خساپ هنومن هب يارب سناش .

تسا ،بيترت .

تسا هدش هئارا صخشم تساوخ لااب رد لاثم هب رد هورگ راد هب تيولوا لكشم سناش لح مدع نيا ت .

دنهد روص رد هكيروطنامه مادك تسين .

خساپ دنك هدش لح .

دنامب خساپ نودب هدش هئارا تساوخرد و دننك لح ار لكشم نيا دنناوتن اه ميت

.

دشاب يم ) تيلوئسم هريجنز

Chain of responsibility

( يوگلا زا يفيرعت ابيرقت دش هئارا هك يلاثم ارنآ د.

ري ءايشا گ يم اي يش تروص رد .

دن ك لاسرا مادك ءايشا هريجنز دنادب زا رد يا هكنيا هريجنز نودب هب دنك لاسرا تساوخرد ار لاسرا يتساوخ اب راك رد نيا .

يدعب يش هب ار نآ اي دهد خساپ هدش هئارا دناو تب ) هريجنز رظن رد دروم يدعب يش يش رگا ( .

دنك شا يم نيشناج لمع يش هدش هب ار هئارا نآ تساوخرد يارب تروصنياريغ دوش داد يم هداد دنهاوخ هزاجا خساپ نآ تساوخرد وگخساپ رددهد يم ار هب دناوت كي نآ ناونعب خساپ يش يم هب و كي هب وگلا دركدنهاوخ هريجنز نيا رد نيا رد تفايرد يش ره هريجنز ،دهد رد يش باوجار ره عقاو تساوخرد .

دنك يم لاسرا يزاس هيب ش يارب همانرب كي نتشون لوسم امش دينك ضرف .

ميريگ يم رظن رد ار رگيد لاثم كي عوضوم همادا يارب يرتشم دش طسوت دهاوخ هتخ يتساوخرد ورف يرتشم هكنيا هب زا سنج دعب ،تكرش ،ريدم طسوت نيا رد ديئات يم را ردقچ غلبم اب يتاشرافس ريدم ره هك تسا هدش .

ديتسه تروص رد تكرش و دوش صخشم و دشاب كي ديئات زا شرافس ريدم تساوخرد طسوتادتبا رد كيديئات دياب دوش دنيآرف يم هئارا يم تيريدم حطس راهچ ياراد تكرش نيا .

تسا هدش صخشم ريز لودج رد دننك ديئات دنناوت يم هك يغلابم دح هك .

دنك ديئات دناوت

رظن رد كرتشم دير س خ شرافس يفرتنيا كي مان هب ياراد شرافس هك يارب مينك يم سلاك فيرعت كي ادتبا شرافس رد ؟ دينك تيريدم ريز رد ) ترو ص نيشناج هب تيريدم يش ( حوطس يدعب يش و شرافس ندرك تيريدم صخشم يارب يم مان هب طوبرم سلاك رادومن (

SetSuccessor

) ، داهنشيپ هب هك .

يعازتنا تسا نيشناج ار ييوگلا سلاك هچ كي تيريدم يش حوطس نييعت دتم راكنيا يارب سپس .

ميريگ زا هك مادك .

دوب ره امش يم يارب دهاوخ .

دنك يم لمع هريجنز و نيا ).

تيريدم زا كي حوطس ره .

( دننك دنهد ديئات خساپ هدش دنناوت يم هديسر هك ياه يريداقم تساوخرد بسح رب هب دنناوت بترم يم روط

(Main

سلاك ( دوش يم : تفرگ دهاوخ تروص ريز ياهراك ،شرافس كي ديئات يارب (1 لصتم يدعب يش هب هك هب ييايشا هريجنز زا كي هعومجم رد اهنآ

SetSuccessor

دتم كي نداد طسوت داجيا رارق ءايشا (2 .

دتم دن ك دنك يناوخارف ديئات ي م دناوت لاسرا طسوت يمن راك يش هريجنز رد نيا نا هك هك يدعب دوش يغلبم يش هب يم لاسرا رادقم ار زا هريجنز شرافس تساوخرد نآ رد غلبم دوجوم رگا تروصنيا .

يش دوش ريغ رد نيلوا يم دنك هب ديئات تساوخرد كي ماجنا يم يش ديئات نآ ارنآ ،

authorize

دشابرتكچوك ) .

دينك يسررب ار

BranchManager

سلاك ديناوت يم ريز دك رد لاثم يارب (

abstract class RHandler { protected RHandler successor; public void SetSuccessor(RHandler successor) { // نييعت يش نيشناج this.successor = successor ; } public abstract void authorize (PurchaseRequest purchase);} شرافس تيريدم سلاك

يگدنيامن ريدم سلاك

{ class BranchManager: RHandler public override void authorize ( PurchaseRequest purchase) { // شرافس ديئات { if (purchase.Amount <=25000) } } } } else if (successor != null ) { successor.ProcessRequest(RegionalDirector);

class MainApp { static void Main() { BranchManager A = new BranchManager (); RegionalDirector B = new RegionalDirector (); VicePresident C = new VicePresident (); President D = new President (); A.SetSuccessor(B); B.SetSuccessor(C); C.SetSuccessor(D); Purchase p = new Purchase( 1, "Order 1" ,15000); A.authorize(p); Purchase p = new Purchase( 2, "Order 2" ,110000); A.authorize(p); } }

Main

سلاك

يكي هرخلااب ات دوش يم تسد هب تسد هريجنز يازجا نيب و دوش يم هدرپس

Chain

كي هب تساوخرد .

ديامن

Process Pattern

نيا رد ار تساوخرد دناوتب 

Chain of Responsibility

ياه هدياف  دناد يمن هدنتسرف

Pattern

نيا رد .

دوش يم

receiver

و

sender

نيب

coupling

شهاك ثعاب هدن تسرف هرابرد يصخشم شناد مه هدنريگ نينچمه .

دوش يم شزادرپ يسلاك هچ طسوت شتساوخرد هك .

درادن و اهراك نياربانب ،ديهد رييغت ار

Chain

ارجا نامز رد ديناوت يم امش .

دوش يم رتشيب

flexibility

ثعاب .

تسا رييغت لباق كيمانياد روطب هريجنز رد ماجنا لباق ياه تساوخرد   : هتكن .

درادن يصاصتخا و صخشم هدننك تفايرد .

request

نوچ .

دوش ماجنا امتح تساوخرد هك تسين ينيمضت دوشن ماجنا لاصا تساوخرد تسا نكمم ،دشاب هدشن يهدنامزاس يتسرد هب

Chain

هك يتروصرد

Command

GOF Intent: Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

.

دوش يم هتخانش زين

Transaction

اي

Action

ياه مان هب

Pattern

نيا كي يناوخارف ( تساوخرد كي يارجا يارب مزلا تاعلاطا همه هك تسا

Object

كي عقاو رد

Command

.

تسا هدش

Encapsulate

نآ رد ) دتم )

Client

). تسا هدرك ار نآ يارجا تساوخرد هك تسا يسلاك زا لقتسم

Command

.

تسا ناهنپ

Client

ديد زا

Commant

يارجا تايئزج

Pattern

نيا رد نينچمه

Command Pattern

هدافتسا دراوم  ربراك تساوخرد هب و موزل تروص رد و داد رارق

Stack

كي رد ار هدش ارجا

Undo

يزاس هدايپ ۱ ياه

Command

ناوت يم .

دومن

Undo Transactional

راتفر ۲

Undo

.

هباشم دريگ رارق .

ددرگ

Rollback

هدافتسا دروم دياب تايلمع لك يلامتحا

Rollback

،يكي نامز ندش رد ات

Fail

درك اب هك يرادهگن هتسباو يتسيل اما رد هناگادج ار هدش تاروتسد ارجا دروم تاروتسد رد دياب

Wizard

يزاس هدايپ ۳ .

دوش ارجا هريغ و

shortcut Progress Bar

يزاس هدايپ 4 شور دنچ هب روتسد كي يناوخارف 5 كي اي همكد كي كيلك اب تسا نكمم روتسد كي هك اه

GUI

رد لاثم

: تسا تروص نيدب

Pattern

نيا رادومن

مارگايد نيا رد هك  يهدرادقم ار نآ receiver و دنك يم داجيا ار ConcreteCommand هنومن

Client

.

ديامن يم تسيل لاومعم .

دنك يم رداص بسانم نامز رد ار Command يارجا روتسد

Invoker

يارجا تيريدم نآ ي هفيظو يلك روطب .

ديامن يم يرادهگن ارجا تهج ار اه Command .

تسا اه Command ره .

تسا هدش هدايپ سلاك نيا رد Command .

دراد هگن ار دوخ بسانم يارجا يزاس هدايپ تايئزج receiver هب refernce

Receiver

دياب Command

Strategy Design Pattern

و

Command Design Pattern

توافت  .

دراد كي ار راك يم بلاقرد هگن ار كي يارجا .

دومن ارجا ار دوخرد روتسد روتسد نآ ار كي هك فلتخم صوصخب يناوخارف راك هكلب كي يارجا ،تسين راك نوگانوگ متيروگلا ياه متيروگلا

Strategy

يواح

Command

اما دهد يم ياه نامز ناكما رد و راك اه نيا هار زا .

دنك يم

encapsulate

و داد لاقتنا رگيد ياه دوخ رد

Object Object

نيب ناوتب

Iterator

GOF Intent: Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

.

دوش يم هدناوخ زين

Cursor

مان هب

Pattern

نيا يصاخ هنوگ هب اه تسيل نيا زا مادك ره .

تشاد ميهاوخ راك و رس فلتخم ياه Object زا ينوگانوگ ياه تسيل اب همانرب رد يهاگ .

تسا توافتم يرگيد اب كيره تايئزج و دنوش يم يزاس هدايپ ريگرد ه كنيا نودب ،اه تسيل نيا شياميپ يارب ،ربراك هك تسا نيا شا هجيتن دوش هدافتسا اه تسيل همه يور هريغ و Previous ، next Iterator Pattern رگا طيارش نيا رد نوچمه يتايلمع يارب هدش نييعت شيپ زا ياهدتم يرس كي زا ،دوش تايئزج .

دنك يم هدافتسا رد اي دينك ،دشاب ه ArrayList هداف تسا تشاد راكنيا كي يارب يسرتسد رد ار ءايشا ،هيارآ اه كي هداد رد ،دينك نامتخاس نيا هريخذ زا هنوگچ مادك ره ار دوخ يش نيا يراك هدنهد كبس و نيا رد دوجوم ءايشا هب دراد زاين رگيد سلاك كي ليكشت هقلاع ،ميهد هب ءايشا هجوت رييغت اب ديراد ليامت ديناوت يم يمك ار هلئسم ،ديراد امش .

بكرم رگيد يش راتخاس يكي كي يور ديهدب هزاجا اما .

ا لكشم هنآ هب ن يا هب ،ءايشا هبلغ ندش يارب سپ هريخذ .

ديا هوحن هدرك زا هريخذ علاطا تروص نودب رگيد هچ هب ياه يش نيا سلاك هك رد ار ءايشا ديهد هئارا امش دنادب بكرم هك يش تشاد طسوت دهاوخ ار زاين يياهدتم امتح ،ديراد راكنيا زاين يارب امش .

دنشاب هتشاد يسرتسد

.

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

سلاك دراد ره لقتسم .

مان Iterator دهد يم ار يوگلا هع ومجم ،ميربب كي هك درك دهاوخ .

دوب راكب هلئسم رصانع هب نيا يبيترن لح يارب يسرتسد ميناوت ناكما يم هك هك ييوگلا دنك يم لمع دهاوخ سيفرتنيا تسا نيا هدرك قيرط يزاس زادنك هدايپ ار اديپ يسرتسد سيفرتنيا نيا هك هعومجم يسلاك رظن رد مت تسيل هب سيس رد يش ات ميراد زاين ام كي ناونع هب لصف ره و تسا هدش ليكشت لصف دنچ زا باتك كي هك دينك روصت راك نيا يارب ،ميهد شيامن ار باتك نيا لوصف يماسا ميهاوخ يم ،تسا هدش هتفرگ  فيرعت قبط .

درك ميهاوخ هدافتسا لااب يوگلا زا ام راك نيا يارب ، ميشاب هتشاد يسرتسد باتك نآ لوصف دننام يياه و ،يدعب دتم هب سپس .

مينك فيرعت راكنيا يارب سيفرتنيا كي ات ميراد زاين ادتبا رد ام Iterator يوگلا رصنع ندنادرگرب ،يلعف رصنع ندنادرگرب ،هن اي دراد دوجو تسيل رد يدعب يرصنع هكنيا يسررب .

مينك يزاس هدايپ ار سيفرتنيا نيا ات ميراد زاين لوا رصنع هب تشگرب

.

دريگ رارق شياميپ دروم دياب و دراد يم هگن دوخ رد ار يلصا تسيل هك تسا يسلاك

Aggregate

لااب راتخاس رد

يضرف شيپ

interface

اواج رد هلمج زا .

.

درك دنا هتفرگ رظن رد

implement Pattern

نيا يارب يتاديهمت اهنابز زا يخرب ار نآ ناوت يم موزل تروص رد هك ميراد

iterator

يارب

java.util.Iterator

 : دراد دوجو نآ رد ريز ياهدتم

signature

هك تسا يا

interface

نيا 

hasNext

()

next

()

remove

()

Mediator

GOF Intent: Define an objcet that encapsulates how a set of objects interact. Mediator promote loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently

ياه

Object

هكنيا ياج هب .

دنك يم تيريدم ار رگيد ياه

Object

نيب طابترا هك تسا

Object

كي

Mediator

.

دننك يم تبحص Mediator هطساو اب ،دنشاب هتشاد لماعت مه اب اميقتسم طبترم .

دنك

encapsulate

دوخ رد ار اه

Object

رگيد

Communication

هوحن هك تسا نيا

Mediator

دوجو هفسلف

Mediator

دياوف .

دباي شهاك مه هب )

coupling

) اه

Object

يگتسباو هك دوش يم ثعاب .

دشاب اهنآ دوخ رييغت هب زاين هكنيا نودب ،داد رييغت ار اه

Object

طابترا و لماعت هوحن ناوت يم

Mediator

دوجو اب

اهنآ اهنآ زا ك ت يربخ كت اب ميهاوخ ميهاوخب همه ،هك ميريگب تسه سام ت يدرف درف نيا هشيمه اب يم هشيمه رگا و .

ديآ ،هك يم ميراد يدايز نامغارس هب زين ام ابيرقت هك اما تسا .

اهنآ يفاك يارب طقف يميمص لكشم ناتسود كي و و رازه روطنيمه سپ ، دش دوب لح دهاوخ لكشم اه يسلاكمه يليصحتلا غراف هاگشناد زا دعب نارود اما رد ،ميشاب ام همه هتشاد تخس سپ يليخ ،دنشاب ناميارب هتشاد ميشاب طابترا وا هتشاد طابترا ابدنهاوخ يم .

ميروآ تسدبءاضعا هيقب زا يربخ ات

لاثم زين ه د ننامه مانرب اما .

يرادهگن دنراد هك طابترا دش رگيدمه دهاوخ رجنم اب و هفيظو دش كي نداد دهاوخ رت ماجنا هديچيپ يارب ءايشا همانرب ، ،دباي زين ارگ شيازفا يش ياه رازفا تاطابترادادعت مرن هچ يايند ره رد ،لااب .

دباي شهاك زين ددجم هدافتسا تيلباق و دوش رت تخس زرط ،دوش يم هدافتسا لته كي رد ينامهم قاتا كي روزر يارب مرف نيا .

،ديريگب تسا هدش رظن هداد رد ار ريز حيضوتريز مرف رد لاثم مرف يارب دركلمع

.

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

هب طوبرم دنوش يم دليف لاعف .

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

تسا عقاوم مامت نآ دياب رد ،دوش هك دنكدراو كاپ اه دناوت نامهم يم دادعت ار يياهنامز رگا .

دوش طقف يم اما لاعف و دنك يم دراو ار خيرات و تعاس و اهنامهم دادعت ربراك .

هكيماگنه دوش يم .

لاعف دشاب اه مامتا اذغ تعاس تسيل ،درك زا رتكچوك باختنا ار دياب عورش سيورس تعاس عون كي .

دوب دهاوخ توافتم هدش هئارا ياهاذغ تسيل ،سيورس عون و تعاس ،خيرات هب هجوت اب دوش يم لاعف روزر همكد ،دندوب ربتعم رگيد اه هداد و ،دش باختنا اذغ عون كي لقادح هكيماگنه

يم هب لاسرا ميناو ت Mediator يم وگلا نيا زا سلاك هب هدافتسا ار اب دوخ .

دنك مايپ يم ،دنك لاسرا رارقرب رظن طابترا دروم رگيد يش هب ار يش نآ اب دهاوخ بايريسم يم كي : يش ميباي يكي دننامه هكينامز سلاكو تسد ريز .

لاح دنك يايازم يم شها ك ،سلاك نيا ميهدب فلتخم ياه سلاك نايم يگتسباو وگلا نيا زا هدافتسا اب : همانرب رد رييغت يگداس زا ياه رگيد سلاك ياه ريز سلاك رد داجيا اي يرييغت و Mediator سلاك هكنيا نودب مينك رد لامعا رييغتاب ار رظن طقف دروم دراوم رثكا تارييغت رد و ميناوت دباي يم سلاك ددج يگديچيپ م هدافتسا شهاك تيلباق ،سلاك نايم ثعاب Mediator سلاك يگتسباو هك شهاك تشاد اب هجوت يم لقتنم Mediator راتخاس نورد هب يگديچيپ نيا اما : ددجم دياب ،دوش يلو يم هدافتسا اه .

دباي سلاك تيلباق يم نيب شيازفا شيازفا اه يگتسباو .

دوش لكشم نآ رييغت هك دوش ثعاب تسا نكمم و دوش .1

.2

Mediator

ي وگلا

UML

رادومن

سيفرتنيا هك دنتسه نيا .

هك يياه ميداد دنك سلاك يم ،اه فيرعت

Colleague

ءايشا سلاك

Colleague

و .

رارق

Mediator

سلاك رد و ميدرك اب طابترا دوش ادج يم اهنآ يارب يزاس سيفرتنيا كي

Mediator

يش لااب رادومن هدايپ

ConcreteMediator

سلاك رد طسوت زا ار يگتسباو و طابترا نيا امو دنتشاد طابترا مهاب

Mediator Pattern

ياه دربراك هك يعامتجا ياه هكبش دننام

share

.

دراد يلصا دربراك پيت ود

Mediator Pattern

هريغ و يدنب هورگ ساسا رب هباشم ياه

Object

نيب ماغيپ لدابت يارب ار يزيچ اي دنتسرف يم مايپ هاوخلد هورگ ناربراك هب دوجوم ياه يدنب هورگ ساسا رب ناربراك .

دننك يم  نآ يازجا هك ميراد

GUI

كي دينك ضرف .

ار راك نيا تيريدم ناوت يم .

دنوش يم فلتخم ياه تيعضو رد اه

Enable

اي

Disable Object

نيب يگنهامه داجيا يارب فلتخم ياه لكش هب هيقب اي يكي باختنا اب .

داد ماجنا

Mediator

رد 

Memento

GOF Intent: Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later.

هلمج زا

State

نامه هب نآ ندنادرگزاب تهج

Object

كي

state

يرادهگن يارب

Memento Pattern

.

دور يم راكب

Undo

ماگنه  تشگزاب ناكما هك اه يزاب رد اي تسا زاين دروم

Undo

ناكما هك اجره .

تسا دايز

Pattern

نيا ياهدربراك .

هريغ و دراد دوجو لبق لحارم هب  .

دوش يم هتخانش زين

Token

ناونع اب

Pattern

نيا

اما ؟هن نودب تشاذ اي يزاب گ د يناسرب اما دننك دنهاوخ ناياپ رانك يم هب يزاب ار ار يرتويپماك اه ودنامك دوز يليخ ار يزاب يزاب دننام نيا كي زا هلحرم كيژتارتسا كي يزاب كي ات دارفا رثكا امتح تلاح ديا دننك هتسشن روصت دوخ دنا رتويماك هداد ماجنا تشپ ارراكنيا .

نيا دش رد .

تسا دهاوخ هدش تخس هئارا يليخ ندرك ربراك لاحب هك ات ايآ يناسك هريخذ راك اعقاو تيلباق نوچ ربراك ياه زاين ندرك هدروآرب يارب مينك يزاس .

هدايپ مينك و يحارط يزاس هدايپ ار و يرتويپماك يحارط يزاب ندرك كي هريخذ دشاب تيلباق رارق اب يزور يزاب رگا دياب سپ امتح يتيلباق هك ه ينام لئسم اب ز نيا دياب ره يزاب سپس يارب امش نيا و .

دنك ديتسه هريخذ يزاب هطقن كي نآ يحارط و لح هار .

يحارط رد دهد ار لاح يزاب همادا تسا رد دناوتب امش تساوخ هدرك دينك هريخذ ضرف هك : يزاب مينك زا يم فيرعت يتمسق ره رد ار هلئسم ربراك هك رگيد دوش رابكي هئارا هك يا هطقن نامه ؟دشاب زا ار دناوت يزاب يم دناوتب هنوگچ و تساوخ تسچ

: رگيد هلئسم كي اي ياه يم ديرخ ي سانجا گژيو و دوش زا يكي يم و .

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

دهددارق يرتشم ديرخ دبس رد و هب زا امش هدش دينك روصت تساوخرد ار دياب دنك دوخ يبايزاب زاين متسيس ار .

دروم دوش يلبق هار كي ميهاوخ .

تسه يسررب زاين ،ارنآ تروص دركلمع رد تلاح هوحن هك .

نآ يبايزاب سپس و ءايشا تسا Memento يوگلا دوجوم ،اهنآ تلاح هيبش و هريخذ لااب ام لئاسم راك ،لااب يارب هلئسم بوخو ود ره دوجوم .

رد لح درك : تسا ريز تروصب وگلا نيا

U ML

، رادومن

اب يش نيا ،مينك يبايزاب و هريخذ ار يش كي تلاح ات ميراد زاين ام ،دش هراشا لااب رد هكيروطنامه ه ك مامت تسا تروص نيا هب (originator ) ، دوجوم يش يش نيا .

تيعضو دنك ندرك هريخذ هوحن يم originator يش زا اما ار .

دوش ندرك يم صخشموگلا هريخذ نيا رد originator مان تساوخرد Client همانرب هكينامز ار يش زا نآ راكنيا و state هعومجم دهد هب يم رارق تفصرادقمرد يارب .

يش مينك نآ Memento originator تيريدم ،دوش و يرادهگنار يمداجيا مان هب يشزا رگيد state Memento يش تفص Memento يش كي عون كي رد رادقم زا ،ار ءايشا هكينامز .

تسا ات زاين رادومن ميراد مينك يم شتلاح زاين رد ام ( .

.) يبايزاب دنكيم دريگ يم يارب هك ار يتافص لاسرا Client هب رارق Memento هدافتسا caretaker مان هب يسلاك ، رگيد يش يش كي اب Caretaker يش نآ Memento يش دنك باختنا يبايزاب ار زا هدش دوش دعب يم .

باختنا ماجنا دوش تلاح undo باختنا ات دنك لمع Memento يم كي هك يناوخارف يتقو يش .

كي د وش ات يم دنك هفاضا Caretaker ءايشا يم يراكمه (client ) ار Originator يش setMemento دتم

.

دوش يرادهگن دياب نآ State هك يلصا Object : دراد زا تسا ءزج هس ترابع

Pattern

نيا

Originator

كي عقاو رد و دهد رد ودراد يم يم هگن رييغت ار ار Originator Originator يلخاد يلخاد State State هك هك يا Object زا .

تسا Originator تسا زا يا ترابع

Memento

هظحل snapshot يا Object .

دنك زا تسا ترابع

Caretaker

يم Undo ار نآ موزل تروص     نآ رد رد هك دنك يم memento ار memento هرابود Undo نينچمه .

دنادرگزاب State نآ هب ار كي تساوخرد Originator ماگنه Caretaker .

دوش يم دوخ نآ .

دنك زا تسا مزلا هك نامز يرادهگن Originator ره Caretaker يا هظحل State زا هدافتسا داجيا اب Originator memento يور ات دراذگ يرييغت چيه يم Originator دناوتب رايتخا ديابن caretaker

: هتكن دنچ تاعفد عبانم و هب Caretaker دشاب هتشاد تروصب memento اي متسيس رد دوش يور يرادهگن Memento يدايز تارييغت هك overhead تسا نيا رد دناوت لكشم نيا يدايز يم راك يارب هب يم تبسن هدش ماجنا ار memento تارييغت يبايزاب و طقف هريخذ ، state رد يرت لك هدش يرادهگن باسح ياج تيريدم هب تاعلاطا نيا لح ينعي هتبلا ،دنك راك هار مجح تفايرد .

دنوش نيا دشاب زاين هك يتروصرد ار memento دايز كي .

دنك لاغشا ار متسيس يرادهگن incremental .

دوش يرادهگن لبق State .

دبلط ار memento رييغت ناكما Originator اهنت رودقملا يتح هك ديشيدنا ار نكمم تاديهمت .

مامت دشاب دياب هتشاد دنچره يهجوت .

تسا Caretaker يب لاح نيا اب اب دنريگ يم .

درادن memento .

دنك هدافتسا لاب و رارق رد دوجوم لاغشا هدافتسا ار يدايز دروم state هك و data هظفاح يياه ،تسا memento مجح زا يديد ندرك كاپ هفيظو لاوصا Caretaker نكمم memento ندرك كاپ هب    

Observer

GOF Intent: Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

.

دنوش يم هتخانش زين Publish-Subscribe و Dependents ياه مان اب Pattern نيا  يرگيد دادعت تسا مزلا ، Object كي رد رييغت اب هك دوش يم هدافتسا Pattern نيا زا يتقو .

دندرگ علطم لوا Object رييغت زا اي دننك رييغت مه اه Object زا   .

تسا MVC يرامعم Pattern يديلك يازجا زا يكي Pattern نيا 

و تياس اي اهربخ ام ش ليم يا يارب هب اه نيا هكبش عقاوم غارس هب يضعب صاخ ،دشاب تاعوضوم هتشاد دوجو تسار يتح رد .

كي اهربخ ،دوش ديوش يديدج زا ربخ هاگآ يضعب يم تنرتنيا دوخ هقلاع دراو دروم اي يتح هكينامز .

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

دوش هكينامز لاسرا ات .

زين دوش امش يم ،ديداد يحارط فارصنا لوئسم دوخ امش تيوضع رگا .

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

يحارط راك نيا دننك رد يارب هك يم ار يرازفا مان يدارفا مرن تبث راك زكرم متسيس تساوخرد نآ .

دش يارب زكرم كي امش دشاب ناشياه نآ زا صصخت صاخ هب صصخت هجوت كي رارق رگا .

دننك يم ؟دوب علطم دهاوخ

هئارا ه لئسم نيا يارب يفلتخم ياه حرط ،يراك هقيلس و هلئسم زا دوخ كرد هب تبسن ميناوت يم ام زا مادك ره اهراب هت سباو ،وگلا تسا نآ نيا ر د هتسناوت هب ءايشا هك زا تسا Observer يوگلا يا هعومجم هك ميراد ،دشاب يش كي يلاع ام .

دنوش يم هاگآ رييغت نآ زا رگيد ءايشا ،دنك و بوخ ،لااب باوج هلئسم ود يم رييغت رظن كي ره دروم دناوت رددهد يم هك خساپ يش تيعضو يحارط هلئسم هك كي نيا ينامز ره اما هب .

يم Subject ار ،ربخ يش و .

دنتسه هتسباو نآ هب دنتسه Observer يش ءايشارگيد كي دنوش هك يم ار يا وضع يش و تياس ميمان رد هك يم Observer يدارفا ،لوا ار لاثم هتسباو رد هنومن ءايشا يارب .

.

ميهد اهراب دنتسه هعومجم ميمان تسا Subject نامه و ،دنك ريي غت شتيعضو .

،كي دننك يم فرط يش يناسر هكيماگنه زورب تيعضو ،تسه نآ هب ءايشا هجوت اب نيب ار دنچ هب ناشدوخ كي ،يگتسباو تيعضو و دنوش كي Observer يوگلا يم علطم هتسباو ءايشا : تسا ريز تروصب وگلا نيا دركلمع مزيناكم و (unregistering ) تيوضع زا فارصنا و (registering ) تبث يارب سيفرتنيا .

دنك كي هدامآ دياب Subject .1

ار تارييغتزا علاطا لاسرا اه observer هب ار دنا هدش رتسجير نآ يارب اه observer هكار يتلاح تاعلاطا دياب ، Subject .2

دنك .

دنك هدامآ Subject زا مايپ تفايرد يارب سيفرتنيا كي دياب Observer .

۳

: تسا ريز تروصب وگلا نيا سلاك رادومن

Observer Pattern

و

Mediator Pattern

توافت هك اه ك

Object

ي هچنآ اما تيريدم .

دنراد اب همه مه تفايرد اب و يدايز لاسرا تهابش ،

Mediator Pattern

طقف .

دننك دريگ يزاس افيا يم رد هدايپ هك ار Receiver تروص هوحن تسا و نيا لكش دنك و

mediator

رظن يم زا

Pattern

زيامتم

Sender

مان هب مه شقن زا ار ود ود دنناوت نيا نيا يم هناگادج

Object

مه زا تفايرد و صخشم نيدنچ و ) لاماك

Receiver Subject

( و هدنتسرف

Sender

كي هشيمه شقن ،

Observer Pattern Pattern

نيا رد .

تسا هدش رد اما كيكفت .

ميراد )

Observer

( هدننك

State Design Pattern GOF Intent: Allow an object to alter its behavior when its internal state changes. The object will appear to change its class;

رييغت ارجا نامز رد ار Object كي State اي ،راتفر هك دنك يم مهارف ار نيا ناكما Pattern نيا رد state اي راتفر ناوت يم نآ رييغت اب و دوش يم يرادهگن State سلاك كي رد راتفر ره اجنيا رد .

ميهد .

داد رييغت ار سلاك  .

دراد Strategy Pattern اب يدايز تهابش Pattern نيا ديس رپ يم نارگيد زا امش اي دوش يم هديسرپ امش زا اهراب زور كي رد هك تسا يلاوس ،؟تسا روطچ امش لاح ياهداد يور هب هجوت اب تسا نكمم هك تسا ايوپ يگژيو كي هكلب تسين امش تباث يگژيو كي امش لاح زا يتوافتم راتفر ناتلاح هب هجوت اب هباشم داديور كي لباقم رد ديناوت يم امش و .

دنك رييغت ينورد اي يجراخ دن تسه يتوافتم ياه تلاح ياراد دنراد رارق ام فارطا رد هك ييايشا رثكا نامدوخ رب هولاع، ديهد ناشن دوخ تلاح ر ه رد ار يتوافتم راتفر و دن ور يم رگيد تلاح هب تلاح كي زا يلخادو ينوريب ياه داديور هب هجوت اب و .

دنهد يم زورب دوخ زا 

نيا .

ديتسه با مانمه همانرب ك ي تلاح هك مليف هب ار دينك كي نديد همانرب روصت لاح لاح ديناوت .

رد

Windows Media Player

دننام يم اهنآ ديريگب يور رظن رد كيلك ديناوت اب هك يم همانرب كي اب دينك ضرف لاثم يارب ار دراد

Play

لااب ، تلاح

Pause

هس ،يش و

Stop

نيا دننام يارب سپ يياه .

همكد ديربب همانرب همكد نآ .

ميسيونب ميهاوخ يم نامدوخ ار لااب لاثم هب هيبش كي هك ار يتلااح مامت ادتبا رد ام رييغتم تلاح كي ير تلاح ادهگن ره يارب يارب رييغتم مود كي هلحرم اهنيا هك دشاب رد رب .

مينك هولاع و بيترت نيا يم مينك يروآ يم هب دناوت عمج ار صخشم يم دنك ار اهنآ راك لوبق نيا دناوت ماجنا يارب اه هويش زا يم

Media Player ،

يكي يش هب طوبرم ريداقم و مينك يم فيرعت .

ميريگ يم رظن رد يش يلعف

const int play=0; const int stop=1 ; const int pause=2 ; int state = stop ; // هيلوا تلاح يم ات داجيا دنرب يم سلاك راك هب كي ار اهتنا يطرش رد و .

تلامج مينك هك يم مينك يروآ يم عمج داجيا ار دتم دهد كي .

خر لمع دننك دناوت يم متسيس رد ره يارب يزاس ،دنك هدايپ ار لمع تسا هك يياهداديور و لامعا مامت تلاح زاين نيشام تلاح ره كي رد ناونع هك ار هب هك يبسانم سپس مينك راتفر { public void Stop () if (state == play) { // رظن دروم تايلمع { if (state == pause) { // رظن دروم تايلمع { if (state == stop) { // رظن دروم تايلمع {{

هك ميه دن ك د روصت رييغت يلو صاخ .

دورب تلاح راك كي هب رد تسا يش تلاح نيدنچ دركلمع هوحن ياراد رد اي و هك يش مينك كي هفاضا يزاس يش هدايپ هب يارب ميهاوخبار دناوت يم ديدج لااب تلاح شور كي .

تشاد ميهاوخور شيپ ار يلكشم راك انئمطم فلتخم شور زا تلاح يكي نيدنچ يلو .

دينك دنناوت هئارا يم دوخ ديناوتب تايح يرتهب و لوط بوخ رد ياه هك ييايشا خساپ امش يزاس دياش هدايپ ؟دشاب : يارب اراك هنوگچدناوت و بوخ يم شور ،دنشاب كي هتشاد دشاب ريز تروص هب دناوت يم اه د روم يش هك تسا يلمع ره يارب دتم كي لماش هك مينك يم فيرعت state مان .

هب سيفرتنيا دهد ماجن ا كي دناوت ادتبا يم رد رظن يم يزاس .

هدايپ دراد رارق ار state سيفرتنيا تلاح نيا رد يش هك مينك هكينامز .

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

رد دنك   .1

.2

.

مينك يزاس يم هدايپ فيرعت state يارب .

.

دنك دوش مان هب يم يم يزاس يناوخ سيفرتنيا هدايپ ارف ار لمع سلاك state ره كي ام سيفرتنيا هكيماگنه ادتبا هك مينك رد Media Player مينك صخشم يم ار فيرعت سلاك ، لاثم سلاك ره راتفر كي ات نامه تلاح ميراد رد ره زاين هنومن يارب يارب ام سپس تلاح ره

رظن دروم يش سلاك نامه اي يلصا سلاك هب ،رظن دروم يش تلااح مامت يزاس هدايپ زا دعب نيدنچ اب اما تشاد اه تلاح يارب هك دهاوخ ار لوا شور ياه ءايشا زا ،يلعف تلاح و تلاح دتم نامه ره يارب سلاك يددع .

نيا .

ميسريم ( Media Player ) : توافت ياهرييغتم مينك يم زا هدافتسا هدافتسا ميدرك ياج هب فيرعت .1

نآ دو ش يم يناوخارف يلمع يتقو هكلب .

مينك يمن هدافتسا يطرش تلامج زا رگيد اه لمع يزاس هدايپ رد .

۲ .

دوش يم راذگاو ماجنا يارب يلعف تلاح سلاك هب لمع

public void Stop

() } {

MediaState.stop

(); ي هلمج چيه نودب دش دهاوخ هراجا يلعف تلاح

stop

دتم .

تسا يلعف تلاح هب رگ هراشا

State Media

نوچ يطرش

( State Pattern)

تلاح يوگلا رادومن

Media

نامه ام لاثم رد دشاب يلخاد تلاح نيدنچ ياراد دناوت يم هك تسا يسلاك

Context

سلاك

Player

دن اوت .

دنك يم فيرعت اه تلاح همه يارب كرتشم سيفرتنيا كي

State

سيفرتنيا يم .

دننك يم يزاس هدايپ ،دهد يم ماجنا داديور كي نداد خر لباقم رد هك دوش تلاح نآ رد يش هك ار يياه لمع (

StopState,PauseState

، يم يصخشم يش نآ يلخاد

Concrete

ياه سلاك

PlayState

, ياهسلاك ( تلاح طسوت يش .

كي دنك راتفر رييغت رورم ار دك از يدايز ياه تمسق ميشاب روبجم هكنيا نودب ميهدب شيازفا ميناوتب دياب ار يش .

كي ميهد تلااح رييغتاي دادعت مينك و يم .

ده د ا م سلاك و .

رييغت دنك يزاس ،دنك يم رييغت يزاس يش ناهن ار يلخاد يش تلاح تلااح هكينامز ،هناگادج هدايپ رد هكنيا نودب مينك هفاضا ار شراتفر يش كي دهد ناونع هب يم هزاجا تلاح ره يش يكي نتفرگ هب رظن هطوبرم يش هب ار رظن دروم .

تلااح ميهد ماجنا ،تلاح رد اب يوگلا نينچمه دادعت ره ميناوت رييغت context       

Strategy

GOF Intent: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

لح رد .

زا هب زا ها ر مي نيدنچ نك يم تسا باختنا نكمم ار اه لئاسم لح هار نيا نيا رب زا هبلغ يكي يارب رابجا و هب مينك اي يم دوخ دروخرب طيارش هب يلئاسم هجوت هب ابام .

دوخ هرمزور ميشاب هتشاد يگدنز ور رد شيپ م يناوت همانرب يكي ات يم دوخ صاخ هك لمع مينك كي ماجنا يحارط تهج يروط ار ميهدب ر براك اي تنيلاك همانرب هب ينعي همانرب ار دراد ميناوت ناكما دوجو يم نيا اي طيارش تلاح دنك نيا نيا رد زين رازفا مينك مرن كي هدافتسا يزاس صاخ هدايپ متيروگلا و باخنتا ار رتلااب يهدزاب اب متيروگلا ايوپ يحارط نيدنچ تروص .

دنك باختنا لمع نآ ماجنا تهج ار اه متيروگلا هكيروطنام ه .

اب و .

يئاراك د نتسه نير تلااب ميتسه يبياعم ياراد و هكبش ايازم هك ار كي يارب ياراد مادك يمتيروگلا يبايريسم ره دياب هك دراد دريذپ همانرب كي دوجو ماجنا يحارط يفلتخم تسارارق هك لاح ياه رد ام هك متيروگلا يلمع اي دينك هكبش يباي ضرف ريسم دوجوم لاثم يارب تيعضو ناونع ميناد هب يم هب هجوت رد ار فلتخ م ياه متيروگلا يئاراك ؟تسچ هك هلئسم دهدب نيا ربراك يارب هب امش ار يناكما يداهنشيپ دياب همانرب يحارط نيا لاح .

نينچمه دنك .

يسررب مينك باختنا يضرف هكبش تسا كي  

ي مادك نيا هلصاف و هلئسم ره و سا تسا ني ا سا دراد رب ار دوجو لاا ب يارب هلئسم بوخ هكبش ياه فلتخم ياه هرگ هك ميراد متيروگلا زاين يزاس اه متيروگلا بترم يارب هيبش اقيقد يحارط كي هلئسم ميناوتب .

.

دراد ام زا يضعب يفلتخم رد ياه لااب هار لاثم .

رد مينك هك دينك بترمءادبم ضرف رگا رگيد سپ ياه .

متيروگلا دشاب لااب هب هلئسم تبسن هيبش يرتهب يحارط يئاراك ياراد ،صاخ دنناوت ميربب راك هب هباشم لئاسم يارب ار يحارط نيا ميناوت يم هرگ طيارش يم رد هلسم ميهد هرابود زا اهنآ هئارا هلئ سم هت سناوت نيا هك يارب تسا يفلتخم يژتارتسا ياه حرط يوگلا ،يراك ،دشاب هقيلس يلاع و و هلئسم بوخ باوج زا دوخ كي .

كرد دناوت دهدب هب يم خساپ تبسن هك ميناوت يحارط يم كي اما ام .

هلئسم نيا هب اهراب و زا مادك ميهد ره هئارا اهراب تسا دوخ دوصقم ه ب فلتخم متيروگلا نيدنچ زا دنناوت يم هك تسا يلئاسم يارب يبسانم هنيزگ يژتارتسا .

يوگلا دنسرب   

.

دوش يم هتخانش Policy Pattern ناونع اب نينچمه Strategy pattern … هك يتقو ؟مينك هدافتسا Strategy زا تقو هچ .

دنتسه توافتم ناشياهراتفر رد اهنت مه اب طبترم سلاك يدادعت يتقو  .

دراد دوجو يتوافتم ياه متيروگلا راك كي يارب يتقو  هدايپ ار سلاك كي توافتم ياهراتفر هك يلاوتم ياه

if

زا نتسج يرود يارب .

دننك يم يزاس 

: تسا تروص نيدب

Pattern

نيا رادومن

هك ميا هتفرگ ميمصت ام هك دينك ضرف .

مينك يم يسررب يزاس بترم هب طوبرم لاثم اب ار وگلا نيا راك هويش .

مينك هدافتسا يزاس بترم يارب ريز متيوگلا هس زا 

Quick Sort Merge Sort Shell Sort

و رد زا راك ه ناگادج يكي نيا ميهد سلاك كي ناونع هب ار مادك ره هك .

ميتسه يژتارتسا هس ياراد همانرب نيا رد يزاس بترم يارب ام يگداس يارب رارق .

دنشاب نآ هب رد دناوتب Client سلاك ار كرتشم .

دننك سيفرتنيا يژتارتسا هكنيا ياراد يارب ConcreteStrategy ياه يزتارتسا ياه سلاك ياه يزاس سلاك هدايپ كرتشم ياهيگژيو و (Strategy سلاك و مامت مينك نامه ( هك تسا سلاك رتهبدنك نامه باختنا ميريگ ار اه فيرعت abstract سلاك دنربب ثرا هب ار اهنآ يژتا كي رتسا يم رظن يژتارتسا ميناوت ياه يم سلاك

هتكن  متيروگلا

context

يور مزلا هك يياه تروص هب تسا

Subclassing interface

ماجنا ياج هب ام هك تسا نيا كي هك ار نآ و مينك يم ادج

Pattern context

نيا رد هجوت لباق هتكن زا ار هطوبرم )

Strategy

( .

مينك يم

implement

تسا

Strategy Pattern

ياه هدياف  .

دنك يم يدنب هتسد ار هداوناخ مه نوگانوگ ياه متيروگل ا .

ديامن هدافتسا يفلتخم ياه متيروگلا زا هك دهد يم context هب ار ناكما نيا .

دوش يم همانرب يياناوخ ثعاب و دهد يم شهاك ار اه if دادعت

visitor

GOF Intent: Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.

.

تسا ” يتايلمع قطنم “ زا ” هداد نامتخاس “ ييادج

Visitor Pattern

فده يمءاي شا هار ميه د يدايزدادعت ماجنا يبيكرت يواح يش هك ميا نوردءايشا هدركدروخرب هعومجم يبيكرت يورار ي هديچيپ كرتشمراكدنچاي يش كي كياب تسا متسيس مزلا كيرد يليلدره هب هكدينك ؟تسيچ ضرف نينچمهدشاب لح : لاثم ي بيكرت يور شيا يش كي من،اطخ يا همانربرهديامنرورمار صيخشت هبزاين ) دشاب يم ...

و همانرب يضاير تسا مزلا هك تارابع،يطرش ميزاسبرلياپماك تاروتسد،راركت كي ياه ميهاوخ هقلح :( دننام يمدينك ضرف يياهراتخاسزا .

دنراد ...

ودكديلوت هحفص

لح هار  ناكماودومن فيرعت لقتسم تروص هب ناوت يمار visitor ياه سلاك عاونا هك visitor يوگلازا هدافتسا .

داداه نآ هبار يبيكرت سلاك نوردءايشا ندش visit نودب دنك يم ارجا و فيرعت دوجوم راتخاس كي رصانع يمامت يور رب ار يديدج لمع visitor يوگلا .

دنك نيزگياج ار نآ ياهسلاك هكنيا يم ليكشت ار ئش راتخاس هك دنراد دوجو يياهسلاك : دوش يم ازجم تمسق ود لماش visitor يوگلا .

دنوش يم لامعا ئش راتخاس يور رب هك دنراد دوجو يياهدتم سپس و دنهد

،يراج زير او باسح هلمج زا هلمج تايلمع دروم رد اما ،دوش يم زا .

دراد يضعب ماجنا دوجو باسح هريغ و باسح عاونا دوس نيا عاونا زا هبساحم يكناب كيره يور ،يريگ متسيس .

هريغ هدنام و كي لاثم رد هدرپس ،تشادرب و .

دوخ هب صوصخم شور هب باسح ره

: تشاد ميهاوخ يحارط نينچ مينک هدايپ ار

Visitor Pattern

لاثم نيا رد رگا

: تسا تروص نيدب

Visitor Pattern

راتخاس يلك تلاح رد

و فرعت ار اه visitor نينچمه ،دنك يم ظفح و دزاس يم ار ئش راتخاس كي هك تسا يسلاك :

Client

.

دنك يم ادص .

دشاب يم طبترم رصانع عاونا زا هديچيپ راتخاس كي :

Objectstructuer

.

دشاب يم ئش راتخاس زا يلصا رصنع عون :

Element

.

دنشاب يم Element زا يياه سلاكريز :

ElementB

و

ElementA

.

دشاب يم visitor ياه سلاك يمامت يارب طبار كي :

Ivisitor

دنو هش يم راركت ئش راتخاس لخاد هك دنتسه دتم يرسكي لماش يياه سلاك :

visitor2

و

Visitor1

.

دنك يم لامعا شرصنع يور رب ار لامعا و

Visitor Pattern

ياه هدياف  .

دهد .

دنك يم رارق يم مه هداس رانك ار ار هزات مه اب ياه

Operation

طبترم ندوزفا ياه

Operation Visitor Pattern

ياه بيع  مه مزلا ياه

Operator

.

دياب

Element

دنوش هفاضا ره يازا هب نوچ اه

Concrete Visitor

.

تسا .

هيلك دنك راوشد رد يم ديدج

Element

ندوزفا مه و

Abstract Visitor

ضقن ار

Encapsulation

رد اما دايز ،دن نك يم رييغت تردن هب يلصا ياه سلاك هك دينك هدافتسا ينامز ،

Visitor Pattern

شتارييغت .

سلاك دنوش هدايپ دوخ رگا سلاك .

دوش دوخ رد هفاضا اه اهنآ هب يديدج

Operator

و ياه

Operator

دوشن نامز هدافتسا

Pattern

نيا لوط زا رد تسا زا هجيتن يلك تسا رتهب  روطب مزلا ،تسا

ق یفوتلا للها نمو نایاپ