十六、複合優先於繼承
複合:在新的類中增加一個私有域,他引用現有類的的一個實例。(現有的類變成了新類的一個組件,裝飾器模式)
wrapper class包裝類
繼承的功能非常強大,但是也存在諸多問題,因爲它違背了封裝的原則。只有當子類和超類之間確實存在子類型關係時,使用繼承纔是恰當的。
十七、要麼爲繼承而設計,並提供文檔說明,要麼就禁止繼承。
十八、接口優於抽象類
abstract與interface的區別:
抽象類允許包含某些方法的實現,接口則不允許。
骨架實現類:使用接口來實現類型。骨架實現類接管了所有與接口實現相關的工作。(適配器模式)
十九、接口只用於定義類型
二十、類層次優於標籤類
二十一、用函數對象表示策略
策略模式
意圖:將可互換的方法封裝在各自獨立的類中,並且讓每個方法都實現一個公共的操作。
Stateful vs Stateless
有狀態就是有數據存儲功能。有狀態對象(Stateful Bean),就是有實例變量的對象,可以保存數據,是非線程安全的。在不同方法調用間不保留任何狀態。
無狀態就是一次操作,不能保存數據。無狀態對象(Stateless Bean),就是沒有實例變量的對象,不能保存數據,是不變類,是線程安全的。