a. 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
b. 抽象不应该依赖于细节。细节应该依赖于抽象。
DIP是framework设计的核心原则。
上层模块通过接口,而不是实现,来调用下层模块。
依赖于抽象:程序中的所有依赖关系都应当终止于抽象类/接口。
=>
1. 任何变量都不应该持有一个指向具体类的指针或者引用;(所以,我们常用的"ClassA a;"方式是不对的,应当用基类指针+多态)
2. 任何类都不应该从具体类派生;
3. 任何方法都不应该覆写它的任何基类中的已经实现了的方法。
以上3条只针对易变的类,对于稳定的类(如String)的依赖是没有关系的,不必搞得这么复杂。
例子: Button -> ButtonServer <- Lamp.
Monday, August 15, 2011
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment