調用者儘量放在被調用者上邊java
對象:對象把數據隱藏在抽象以後
數據結構:暴露其數據數據結構
class Square{ } class Rectangle{ } class Gemetry { public area(Object shape) { if (shape instanceof Square) { } else if (shape instanceof Rectangle) { } } }
添加新類:必須修改Gemetry全部函數函數
class Square implements Shape { public area(); } class Rectangle implements Shape { public area(); }
添加新函數:全部類都必須修改單元測試
設計打包類,封裝第三方庫,否則一堆catch很煩
別返回null
別傳null測試
構造-操做-檢驗(build-operate-check)ui
單一職責原則(SRP) 類或抽象應該只有一個被修改的理由 開放閉合原則(OCP) 類應當對擴展開放,對修改封閉 依賴倒置原則(DIP) 類應當依賴於抽象而不是具體細節設計
將構造和使用分開
工廠模式
依賴注入DI
控制反轉IOC
對象不該該負責實例化,應當把這一權責給其餘‘有權力’的機制,從而實現控制反轉
參考: IoC/DIP實際上是一種管理思想 java代理 --- 代碼量大,實現複雜
AOP
POJO(Plain Old Java Object)
DAO 數據存取器對象代理