الگوی دلیگیشن (Delegation) در کاتلین

الگوی Delegation در کاتلین

بررسی الگوی Delegation

معنی delegation به فارسی یعنی وکالت دادن.

یکی از ویژگی هایی که کاتلین رو محبوب کرده پشتیبانی نیتیو از الگوهای برنامه نویسی پرکاربرده؛ یکی از این الگو ها دلیگیشن (Delegation) است که توسط کاتلین به صورت نیتیو پشتیبانی میشه.

هنگامی که یک اینترفیس رو توسط یک کلاس پیاده‌سازی میکنیم گاهی نیاز به همون پیاده‌سازی در کلاس دیگه داریم برای جلوگیری از دوباره نویسی از الگوی delegation استفاده میکنیم

با این روش به کلاس جدید وکالت استفاده از توابع و پراپرتی های public پیاده‌سازی شده در یک کلاس دیگه رو می دیم.

fun main(){ val audioP = AudioPlayer() val videoP = VideoPlayer(audioP) audioP.stop() videoP.play() } interface BasePlayer{ fun play() fun stop() fun next() } class AudioPlayer(): BasePlayer{ override fun play() { println("Playing...") } override fun stop() { println("Stopping...") } override fun next() { println("Next") } } class VideoPlayer(b: BasePlayer): BasePlayer by b{ var isFullScreen: Boolean = false }

میتونیم توابع یا پراپرتی هایی رو که به وکالت گرفتیم بازنویسی کنیم

در مثال زیر برای خلاصه کردن از نوشتن قسمت هایی از کد بالا خودداری کردیم.

... interface BasePlayer{ val codecType: String ... } class AudioPlayer: BasePlayer{ override val codecType: String = "MPEG-2" ... } class VideoPlayer(b: BasePlayer): BasePlayer by b { override val codecType: String = "H265" ... }

توجه

الگوی delegation در کاتلین فقط برای اینترفیس ها قابل استفاده است

خلاصه

دلیگیشن (Delegation) به معنی وکالت دادن است

الگوی دلیگیشن (Delegation) یکی از الگو های پر کاربرد در طراحی الگو است که توسط کاتلین به صورت نیتیو پشتیبانی میشه.

فقط توابع و پراپرتی های public اینترفیس ها قابل وکالت دادن به کلاس هستند.

arrow_drop_up
کپی شد!