为了更加深层次的理解设计模式,不得不提面向对象设计原则。主要的设计原则如下:
1.单一职责原则
即一个类应该仅有一个职责,如果一个类有多个职责,可能一个职责的变化,会影响到其它职责的实现,甚至引起其它职责的变化,这样的设计师很脆弱的。这个原则看起来简单,但是实际上很难做到,因难于区分和量化职责,因此这个原则在实际中很容易违反。
2.开放-关闭原则
即一个类应该对扩展开放,对修改关闭。该原则的要求是:类的行为是可以扩展的,而且是在不修改已有代码的情况下进行扩展,也不必改动已有的源代码或者二进制代码。实现这个原则的关键在于合理地抽象,分离出变化与不变化的部分,为变化的部分预留下可扩展的方式,比如,钩子方法或动态组合对象等。。
但是应该注意的是,适度的抽象可以提高系统的灵活性,使其可以扩展,可维护,但是过度地抽象,会大大增加系统的复杂度。应该在需要改变的地方应用此原则就可以了,而不是到处使用,从而陷入过度设计。
3.里氏替换原则
即子类型必须能够替换掉他们的父类型。
4.接口隔离原则
即不应强迫客户依赖于他们不用的方法。对于那些庞大的接口,应该按照不同的客户需要来分离成为针对客户的接口,这样的接口中,只包含客户需要的操作声明,这样既方便了客户的使用,也可以避免因误用接口而导致的错误。
分离接口的方式:1.进行代码分离 2.使用委托来分离接口 3.在支持多重继承的语言中,也可采用多重继承的方式进行分离。
5.最少只是原则
即只和你的朋友交谈。要求我们在设计系统的时候,应该尽量减少对象之间的交互,对象之和自己的朋友谈话,从而松散类之间的耦合。从而减少类与类之间的依赖。
对象的朋友: 1.当前对象本身 2.通过方法的参数传递进来的对象 3.当前对象创建的对象 4.当前对象的实例变量引起的对象 5。方法内锁创建或实例化的对象。
5.其它原则
1.面向接口编程
2.优先使用组合,而非继承。
3.一个类需要的数据应该隐藏在类的内部
4、类之间应该零耦合,或者只有传导耦合,换句话说,类之间要么没有关系,要么只使用另一个类的接口提供的操作
5.在水平方向上应该尽可能统一地分布系统功能。
================================================
<以上类容均来自与《研磨设计模式》, author:陈臣 & 王斌>