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
Structural
Behavioral
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
نيا لوط زا رد تسا زا هجيتن يلك تسا رتهب روطب مزلا ،تسا