工作筆記--5種最常用的設計模式
工作筆記–5種最常用的設計模式
1工廠方法 關注物件建立。
2策略模式 關注物件行為。業務變化時,對資料模組的增加修改不受影響,開放封閉原則。
3外觀模式 BS/CS
4適配品模式 報表自主開發或購買第三方
5觀察者模式 主介面選單(選單的Enable、Vieable狀態)採用事件驅動方式
Spring(ICO控制反轉/DI依賴注入)
單一職責:介面和演算法分離,手機和DV(Digital Video攝像機)各做各的,手機雖然可以拍攝,但肯定沒DV專業
開放封閉原則:軟體可擴充套件、可維護,新增是開放的,而修改是封閉的。Inc、Dec、Mul、Div類,比如再增加一個Squear類不會影響原有類,而修改其中任一個類也不會影響到其他類
依賴倒置(或依賴倒轉)原則,也可以稱為里氏替換原則,子類可以替換父類,面向抽象、介面程式設計,而不是面象實現、細結程式設計。
迪米特原則:假設A類和B類相互獨門,如果他們之間需要呼叫,可以通過第三方實現。
簡單工廠:在Factory類中定義Calculate類(Inc類的基類)物件,通過switch語句實現,把Inc、Dec、Mul、Div放入裡面,同時建立(new ())該物件
抽像基類 + 工廠方法類 => 策略模式Strategy
抽象工廠Abstract(資料庫可能會變更) => 簡單工廠 + 反射
代理模式Proxy:
複雜的情況:A call B =>C call B,比如A類需要呼叫B到類,A類裡有B類的引用,此時增加一個C類(Proxy),在C類中引用A類的,同時建立A類的物件,同時增加個介面Intf類,A:Int,C:Int,這樣在客戶端呼叫時我們就是Intf:i=new C(b的例項);i.Method();
或者簡單點:call A => call C,我們現在需要呼叫A類,本來可以在客戶端直接A a = new A();s.Add();而現在變成Intf i= new C();i.Add();
外觀模式Facade:是一非常常用的設計模式,經典的三層架構的BLL和DAL,WebUI和BLL之間使用的就是外觀模式,依賴倒置和迪米特原則的完美體現。
中介者模式Mediator:可參考迪米特原則。
享元模式Flyweight: 多人註冊部落格或圍棋遊戲,只有黑白二色,如不使用此模式下一盤棋建立物件可能是幾百個,記憶體會耗盡。
狀態模式和職責鏈模式有點類似
訪問者模式Vistor:是GOF的23種模式中最難的一種。