1、在委託模式中,有兩個物件參與處理同乙個請求,接受請求的物件將請求委託給另乙個物件來處理。
2、delegation類並沒有實現 idelegatelistener 中的 delegate() 方法,而是通過by這個關鍵字,將本應該實現的方法委託給了bean,由bean來實現方法
委託屬性
定義乙個委託屬性的語法是: val/var : by ,by後面的就是屬性的委託。委託屬性不需要實現介面,只需要用operator修飾的 setvalue() getvalue函式。如果是val屬性 則不用提供setvalue()
3、延遲屬性 lazy
通過lazy可以定義乙個懶載入屬性,只有val型別的屬性才能延遲初始化,且只初始化一次,lazy()是接受乙個 lambda 並返回乙個 lazy 例項的函式,返回的例項可以作為實現延遲屬性的委託: 第一次呼叫 get() 會執行已傳遞給 lazy() 的 lambda 表示式並記錄結果, 後續呼叫 get() 只是返回記錄的結果。
4、復合符號( 『?.』 『?:』 『!!』 『as?』 『?』 )
//可以復合符號類似以下**
if (foo != null)else
Kotlin學習 Kotlin委託
委託模式是軟體設計模式中的一項基本技巧。在委託模式中,有兩個物件參與處理同乙個請求,接受請求的物件將請求委託給另乙個物件來處理。kotlin 直接支援委託模式,更加優雅,簡潔。kotlin 通過關鍵字 by 實現委託 類的委託即乙個類中定義的方法實際是呼叫另乙個類的物件的方法來實現的。以下例項中派生...
Kotlin基礎 委託
類委託 屬性委託 2.1.方法一 可以按需繼承readonlyproperty readwriteproperty兩個介面中的乙個 2.2.方法二 自己定義,但方法引數必須和 1 中介面的方法引數一致 標準委託 3.1.延遲屬性 lazy 3.2.可觀察屬性 observable 3.3.把屬性儲存...
復合,繼承,委託
復合其實是一種 has a 的關係,就是說乙個類裡面有其他類的物件 例如在stl標準庫的實現中,queue裡面有乙個deque template class queue size type size const void push const value type x void pop queue的...