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

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

یکی از راحت‌ترین الگوها ، الگویِ Template (در لغت به معنی قالب هست) هست که در طبقه‌بندی Behavioral گنجونده میشه ، خیلی ساده و شیک تعریف این الگو این میشه : تعریف یک بدنه به حالتِ کلاس Abstract که در این بدنه یک سلسله مراتب از توابع (step) وجود دارند که ترتیب اونها مهمه ، کلاس‌هایی که از این کلاس ارث می‌برند حق این رو دارند که stepها رو override کنند ولی نباید تابعی که این سلسله مراتب رو می‌چینه رو دستکاری کنند .

قالبِ شیرینی‌ها یکی هستند ، اما موادی که شیرینی‌ها با آن‌ها پخته می‌شوند فرق می‌کنند .
قالبِ شیرینی‌ها یکی هستند ، اما موادی که شیرینی‌ها با آن‌ها پخته می‌شوند فرق می‌کنند .

یک مثال : فرض کنید می‌خواید کلاسِ House رو ایجاد کنید ، برای ساخت خونه به ترتیب این step ها رو داریم : تیرآهن + دیوار + در و پنجره ، حالا شما می‌تونید در و پنجره رو قبل از تیرآهن بسازید ولی برای سر هم کردنشون حتما باید صبر کنید مرحله آخر وصلشون کنید ، تابعی که این step ها رو پشت هم صدا میزنه به اصلاح template method گفته میشه و باید نشه override کردش (در جاوا final باشه و در کاتلین open نباشه) ، این متد در خودِ کلاس House پیاده‌سازی میشه اما باقی متدها مثل متد دیوار (makeWalls) باید در کلاس‌های فرزند پیاده‌سازی بشند ، در واقع ما یک Template (قالب) کلی برای خونه‌سازی ایجاد کردیم که انواع خونه از اون ارث می‌برن .

دو متد که با علامت # مشخص شدند باید override بشوند و در templateMethod که final هست استفاده بشند
دو متد که با علامت # مشخص شدند باید override بشوند و در templateMethod که final هست استفاده بشند

کدِ مثال بالا به حالت زیر در میاد :

https://gist.github.com/sasssass/8a3f6c0a2b9a37e9bf64fd768dc0ddce

که به راحتی میشه ازش استفاده کرد :

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

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

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

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

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