Monday, August 15, 2011

设计原则之DIP 依赖倒置:依赖关系的倒置 + 接口所有权的倒置(客户拥有抽象接口)

a. 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
b. 抽象不应该依赖于细节。细节应该依赖于抽象。

DIP是framework设计的核心原则。

        上层模块通过接口,而不是实现,来调用下层模块。
        依赖于抽象:程序中的所有依赖关系都应当终止于抽象类/接口。
        =>
                1. 任何变量都不应该持有一个指向具体类的指针或者引用;(所以,我们常用的"ClassA a;"方式是不对的,应当用基类指针+多态)
                2. 任何类都不应该从具体类派生;
                3. 任何方法都不应该覆写它的任何基类中的已经实现了的方法。
                以上3条只针对易变的类,对于稳定的类(如String)的依赖是没有关系的,不必搞得这么复杂。

例子: Button -> ButtonServer  <-  Lamp.   

No comments: