首先来回忆一下OO的设计原则:
1. 单一责任原则(SRP) 一个类只有一个责任, 如果它需要被修改, 应该仅有一个原因.
反模式: 一个类处理的事情太多了, 应当进行分解.
2. 开放-闭合原则(OCP) 对扩展开放, 对修改封闭. 也就是说可以修改一个模块(类或方法)的周边环境而不用修改模块本身.
反模式: 一个模块的修改将导致其他模块的修改.
3. 里氏替换原则(LSP) 子类可以代替基类, 客户使用基类, 他们不需要知道派生类所做的事情.
反模式: if(a instanceof TypeA) {...}
4. 依赖倒置原则(DIP) 依赖于抽象类或接口,而不要依赖于那些容易变化的具体类。
从抽象类继承 从抽象类引用 从抽象类调用方法。
5. 接口隔离原则(ISP) 客户不应该依赖根本不用的方法. 为每一个客户提供一个接口,这个接口只包含他们感兴趣的方法。
反模式:肥类(fat class), 有成堆的方法, 而且用户很少使用。
接下来看包的设计原则:
1. 发布/重用等价原则(REP) 我们创建包的目的是为了给别人重用,所以重用的粒度就是发布的粒度。
2. 公共闭合原则(CCP) 因为相同原因而被修改的类应该放入一个包中,对应于“单一责任原则”。
3. 公共重用原则(CRP) 应该尽可能地将只被一个客户使用的包与被多个不同客户使用到的包分开。对应于“接口隔离原则”
4. 非循环依赖原则(ADP) 不要在包依赖图中出现循环依赖。如a依赖于b, b依赖于c,同时c又依赖于a。
5. 稳定依赖原则(SDP) 要依赖于稳定的包,而不要依赖于经常变化的包。对应于“依赖倒置原则”。
6. 稳定抽象原则(SAP) 稳定的包应当是抽象的。对应于“依赖倒置原则”。
1. 单一责任原则(SRP) 一个类只有一个责任, 如果它需要被修改, 应该仅有一个原因.
反模式: 一个类处理的事情太多了, 应当进行分解.
2. 开放-闭合原则(OCP) 对扩展开放, 对修改封闭. 也就是说可以修改一个模块(类或方法)的周边环境而不用修改模块本身.
反模式: 一个模块的修改将导致其他模块的修改.
3. 里氏替换原则(LSP) 子类可以代替基类, 客户使用基类, 他们不需要知道派生类所做的事情.
反模式: if(a instanceof TypeA) {...}
4. 依赖倒置原则(DIP) 依赖于抽象类或接口,而不要依赖于那些容易变化的具体类。
从抽象类继承 从抽象类引用 从抽象类调用方法。
5. 接口隔离原则(ISP) 客户不应该依赖根本不用的方法. 为每一个客户提供一个接口,这个接口只包含他们感兴趣的方法。
反模式:肥类(fat class), 有成堆的方法, 而且用户很少使用。
接下来看包的设计原则:
1. 发布/重用等价原则(REP) 我们创建包的目的是为了给别人重用,所以重用的粒度就是发布的粒度。
2. 公共闭合原则(CCP) 因为相同原因而被修改的类应该放入一个包中,对应于“单一责任原则”。
3. 公共重用原则(CRP) 应该尽可能地将只被一个客户使用的包与被多个不同客户使用到的包分开。对应于“接口隔离原则”
4. 非循环依赖原则(ADP) 不要在包依赖图中出现循环依赖。如a依赖于b, b依赖于c,同时c又依赖于a。
5. 稳定依赖原则(SDP) 要依赖于稳定的包,而不要依赖于经常变化的包。对应于“依赖倒置原则”。
6. 稳定抽象原则(SAP) 稳定的包应当是抽象的。对应于“依赖倒置原则”。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10742815/viewspace-578362/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10742815/viewspace-578362/