در لغت prototype رو میشه "نمونه" یا "نمونهی اولیه" معنی کرد ، کاری که در الگویِ Prototype میکنیم هم همینه ، گرفتن یک نمونه . در Prototype بهجای ایجاد کردن شئ از پایه ، یک Clone از شئ تهیه میکنیم ، یعنی شئ رو در یک شئ دیگه کپی میکنیم ، مسلما چون ما قصد در "ایجادِ" یک شئ داریم جزو طبقه بندی Creational حساب میشه . یکی از زمانهایی که این الگو فایده خواهد داشت زمانیه که ایجاد یک شئ از پایه هزینهی بیشتری نسبت به Clone سازی داشته باشه یا زمانی که اشیای ما فقط در چند حالت خاص میتونن داشته باشن (مثلا اگه ده تا متغیر داریم که Boolean هستند در حالت کلی 1024 حالت وجود داره ولی ما در برنامه فقط شاید سه چهار حالتش رو داشته باشیم (مثال صرفا جهت تفهیم بود)) یا مواقع دیگه .
در جاوا/کاتلین این کار رو با interface ای به نامِ Cloneable انجام میدیم . کاری که انجام میدیم اینه که یک کلاس ShapeClone رو ایجاد میکنیم و یک ماژول به نام ShapeCloneMaker که برای ما یک سری ShapeClone های اولیه تهیه میکنه و بعدا اگه ازش ShapeClone بخوایم از همونا Clone میکنه :
با implement کردن از Cloneable باید تابع clone رو override کنید و طبق کد خروجی که میخواید رو برگردونید ، من در این کد قصد داشتم عینا همون کپی رو برگردونم ولی اگه نیاز به تغییرات روی clone دارید باید همینجا اعمال کنید .
در ShapeCloneMaker اولِ کار دو ShapeClone رو با نام "دایره" و "بیضی" ذخیره میکنیم و در دفعات بعدی از طریق getShape از اونها clone میگیریم .
در آخر کار اینطوری ازش استفاده میکنیم :
باقی مقالات در مورد الگویهای طراحی رو در این مقاله بخونید .
من رو در لینکدین و اینستاگرام دنبال کنید ???
اگه دوست داشتید میتونید به صفحه Spotify بنده هم برید و موسیقی های منو گوش بدید ???