Ali Shobeyri
Ali Shobeyri
خواندن ۲ دقیقه·۴ سال پیش

الگویِ طراحیِ Prototype (جاوا و کاتلین)

در لغت prototype رو میشه "نمونه" یا "نمونه‌ی اولیه" معنی کرد ، کاری که در الگویِ Prototype می‌کنیم هم همینه ، گرفتن یک نمونه . در Prototype به‌جای ایجاد کردن شئ از پایه ، یک Clone از شئ تهیه می‌کنیم ، یعنی شئ رو در یک شئ دیگه کپی می‌کنیم ، مسلما چون ما قصد در "ایجادِ" یک شئ داریم جزو طبقه بندی Creational حساب میشه . یکی از زمان‌هایی که این الگو فایده خواهد داشت زمانیه که ایجاد یک شئ از پایه هزینه‌ی بیشتری نسبت به Clone سازی داشته باشه یا زمانی که اشیای ما فقط در چند حالت خاص می‌تونن داشته باشن (مثلا اگه ده تا متغیر داریم که Boolean هستند در حالت کلی 1024 حالت وجود داره ولی ما در برنامه فقط شاید سه چهار حالتش رو داشته باشیم (مثال صرفا جهت تفهیم بود)) یا مواقع دیگه .

کلون سازی از جری :)
کلون سازی از جری :)

در جاوا/کاتلین این کار رو با interface ای به نامِ Cloneable انجام می‌دیم . کاری که انجام می‌دیم اینه که یک کلاس ShapeClone رو ایجاد می‌کنیم و یک ماژول به نام ShapeCloneMaker که برای ما یک سری ShapeClone های اولیه تهیه می‌کنه و بعدا اگه ازش ShapeClone بخوایم از همونا Clone می‌کنه :

https://gist.github.com/sasssass/63facdc5ad4775019b6b4b28b7d57d96

با implement کردن از Cloneable باید تابع clone رو override کنید و طبق کد خروجی که می‌خواید رو برگردونید ، من در این کد قصد داشتم عینا همون کپی رو برگردونم ولی اگه نیاز به تغییرات روی clone دارید باید همین‌جا اعمال کنید .

https://gist.github.com/sasssass/c3d3b73b403440a2fab6cd125cb1860e

در ShapeCloneMaker اولِ کار دو ShapeClone رو با نام "دایره" و "بیضی" ذخیره می‌کنیم و در دفعات بعدی از طریق getShape از اون‌ها clone می‌گیریم .

در آخر کار اینطوری ازش استفاده می‌کنیم :

https://gist.github.com/sasssass/14a23af0a77c25140ff2cc203ed8cb1d

باقی مقالات در مورد الگوی‌های طراحی رو در این مقاله بخونید .

من رو در لینکدین و اینستاگرام دنبال کنید ???

اگه دوست داشتید می‌تونید به صفحه Spotify بنده هم برید و موسیقی های منو گوش بدید ???


جاواکاتلیناندرویدdesign patternدیزاین پترن
برنامه نویس اندروید - https://www.linkedin.com/in/iryebohs/
شاید از این پست‌ها خوشتان بیاید