kotlin學習之類委託(八)

2021-09-22 01:52:50 字數 1201 閱讀 5811

如果我們需要乙個集合類,含有mutablecollection的所有功能,並可以修改兩個方法,add和addall,那麼我們需要寫乙個新的類繼承mutablecollection,並把乙個mutablecollection成員放到裡面,覆蓋並修改他的所有方法,並修改add和addall方法。

class defaultcollection: mutablecollection

override fun addall(elements: collection): boolean

override val size: int

get() = innerlist.size

override fun contains(element: t): boolean = innerlist.contains(element)

override fun containsall(elements: collection): boolean = innerlist.addall(elements)

override fun isempty(): boolean = innerlist.isempty()

override fun iterator(): mutableiterator= innerlist.iterator()

override fun clear() = innerlist.clear()

override fun remove(element: t): boolean = innerlist.remove(element)

override fun removeall(elements: collection): boolean = innerlist.removeall(elements)

override fun retainall(elements: collection): boolean

}

但是,如果用了委託方法

class delegatingcollection3(private val innerlist: mutablecollection= hashset()) : mutablecollectionby innerlist 

override fun addall(elements: collection): boolean

}

用by關鍵字委託給乙個innerlist物件,只需要修改其中需要修改的方法即可。

Kotlin系列八 委託

委託模式已經證明是實現繼承的乙個很好的替代方式,而 kotlin 可以零樣板 地原生支援它。這是官方對委託的描述,可能比較抽象但當你了解其意義和使用,會發現委託所帶來的方便會讓你愛不釋手,下面我們來開始學習委託吧,首先看乙個官方的例子 inte ce base class baseimpl val ...

Kotlin學習 Kotlin委託

委託模式是軟體設計模式中的一項基本技巧。在委託模式中,有兩個物件參與處理同乙個請求,接受請求的物件將請求委託給另乙個物件來處理。kotlin 直接支援委託模式,更加優雅,簡潔。kotlin 通過關鍵字 by 實現委託 類的委託即乙個類中定義的方法實際是呼叫另乙個類的物件的方法來實現的。以下例項中派生...

Kotlin學習之委託機制

委託模式可以很好的替代實現繼承,kotlin本身支援需要零樣板 乙個類derived 可以繼承base並委託它所有的public 方法到乙個指定的類 inte ce base class baseimpl val x int base class derived b base base by b f...