1. 程式人生 > >設計模式的頂層設計思想分析

設計模式的頂層設計思想分析

我從通俗角度講一下六大原則:     

    一是開閉原則(Open Close Principle),強調對擴充套件開放,對修改關閉。應用場景是當我們的程式碼需要不斷修改時,不能去修改原有的程式碼,而是抽象出父類介面,修改子類即可。

    二是里氏代換原則(Liskov Substitution Principle),強調是父類和子類的關係。應用場景是在定義時使用父類物件,而在執行時再關聯子類型別。

    三是依賴倒轉原則(Dependence Inversion Principle),強調介面的重要性,介面就是把一些公司的方法和屬性宣告,然後具體的業務邏輯是可以在實現介面的具體類中實現的。所以我們當依賴物件是介面時,就可以適應所有的實現此介面的具體類變化,應用場景就是通過抽象(介面或抽象類)使各個類或模組的實現彼此獨立,不互相影響,實現模組間的鬆耦合。

    四是介面隔離原則(InterfaceSegregation Principles),強調介面的職責要明確,根據職責定義“較小”的介面,不要定義“高大全”的介面。也就是說介面要儘可能的職責單一,暴露給客戶端的方法更具有“針對性”,是使用多個隔離的介面,比使用單個介面要好。應用場景是在使用介面時要注意控制介面的粒度,介面定義的粒度不能太細,也不能太粗。

    五是單一職責原則(Single Responsibility Principle),強調一個類只負責一個功能領域中的相應職責,應用場景是一個類是一組相關性很高的函式、資料的封裝,比如單例模式可以降低記憶體的開銷。

    六是迪米特法則(Law of Demeter),強調應該儘量減少物件之間的互動,如果其中的一個物件需要呼叫另一個物件的某一個方法的話,可以通過第三者轉發這個呼叫。應用場景就是通過引入一個合理的第三者來降低現有物件之間的耦合度。

    23種設計模式闡述瞭如何協同作戰部署和兵力調動的問題,作戰前的兵力部署和組合分別是建立型模式和結構型模式,作戰時的兵力調動就是行為型模式。

    建立型模式就是作戰部署,主要包含以下5種設計模式:工廠方法模式(Factory Method Pattern);抽象工廠模式(Abstract Factory Pattern);建造者模式(Builder Pattern);原型模式(Prototype Pattern);單例模式(Singleton Pattern)。其中最常用的就是工廠方法模式、抽象工廠模式和單例模式。

    結構型模式就是作戰前的兵力組合,用來處理類或者物件的組合,主要包含以下7種設計模式:介面卡模式(Adapter Pattern);橋接模式(Bridge Pattern);組合模式(Composite Pattern);裝飾者模式(Decorator Pattern);外觀模式(Facade Pattern);享元模式(Flyweight Pattern);代理模式(Proxy Pattern)。其中最常用的就是介面卡模式、橋接模式、帶代理模式。

    行為型模式就是兵力調動,用來對類或物件怎樣互動和怎樣分配職責進行描述,主要包含以下11種設計模式:責任鏈模式(Chain of Responsibility Pattern);命令模式(Command Pattern);直譯器模式(Interpreter Pattern);迭代器模式(Iterator Pattern);中介者模式(Mediator Pattern);備忘錄模式(Memento Pattern);觀察者模式(Observer Pattern);狀態模式(State Pattern);策略模式(Strategy Pattern);模板方法模式(Template Method Pattern);訪問者模式(Visitor Pattern)。其中最常用的就是責任鏈模式、迭代器模式、觀察者模式、狀態模式和策略模式。