设计模式之六大设计原则

来源:互联网 发布:干程序员帅哥变 编辑:程序博客网 时间:2024/04/28 23:43

我们已经了解到设计模式体现的是软件设计的思想,而不是软件技术,它重在使用接口与抽象类来解决各种问题。在使用这些设计模式时,应该遵循如下所示的六大原则。

一、  开闭原则

1.概述

一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭

2.意义

1)开闭原则可保持原有的测试代码仍然能够正常运行,我们只需要对扩展的代码进行测试;

2)开闭原则可以提高代码的复用性;

3)开闭原则可以提高可维护性;

4)开闭原则面向对象开发的要求。

3.注意事项

开闭原则对扩展开放,对修改关闭,并不意味着不做任何修改,低层模块的变更,必然要有高层模块进行耦合,否则就是一个孤立无意义的代码片段。

二、  里氏代换原则

1.    概述

子类型必须能够替换它们的父类型

2.     意义

(1)代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;

(2)提高代码的重用性;

(3)子类可以形似父类,但又异于父类;

(4)提高代码的可扩展性;

(5)提高项目的开放性。

3.     注意事项

(1)继承是侵入性的,只要继承就必须拥有父类的所有属性和方法;

(2)降低代码的灵活性,子类必须拥有父类的属性和方法,让子类增加了约束;

(3)增强了耦合性,当父类的常量、变量和方法被修改时,必须考虑子类的修改。

三、  依赖倒转原则

1.     概述

A.        高层模块不应该依赖低层模块。两个都应该依赖抽象;

B.         抽象不应该依赖细节。细节应该依赖抽象。

2.     意义

(1)可以减少类之间的耦合性;

(2)提高系统的稳定性;

(3)降低并行开发引起的风险

(4)提高代码的可读性;

(5)提高代码的可维护性

3.     注意事项

(1)每个类尽量都有接口或抽象类,或者抽象类和接口两者都具备;

(2)变量的表面类型尽量是接口或者抽象类;

(3)任何类都不应该从具体类派生;

(4)尽量不要覆写基类的方法

四、  合成聚合复用原则

1.        概述

尽量使用合成聚合而不是继承去实现复用。

2.        意义

(1) 新对象存取子对象的唯一方法是通过子对象的接口。

(2) 这种复用是黑箱复用,因为子对象的内部细节是新对象所看不见的。

(3) 这种复用更好地支持封装性。

(4) 这种复用实现上的相互依赖性比较小。

(5) 每一个新的类可以将焦点集中在一个任务上。

(6) 这种复用可以在运行时间内动态进行,新对象可以动态的引用与子对象类型相同的对象。

(7) 作为复用手段可以应用到几乎任何环境中去

3.注意事项

1)继承复用破坏封装性,因为继承将父类的实现细节暴露给子类。

2)如果父类发生改变,那么子类的实现也不得不发生改变。

3)从父类继承而来的实现是静态的,不可能在运行时间内发生改变,没有足够的灵活性。

 

五、  迪米特法则

1.     概述

一个软件实体应该尽可能少的与其它实体发生相互作用。

2.     意义

降低类之间的耦合

3.     注意事项

(1)尽量不要对外公布太多的public方法和非静态的public变量,尽量多使用privatepackage-privateprotected等访问权;

(2)如果一个方法在本类中,即不增加类间关系,也对本类不产生负面影响,就放置在本类中;

(3)谨慎使用Serializable

六、  接口隔离原则

1.        概述

应当为客户提供尽可能小的单独的接口而不应该提供大的综合性的接口。

2.        意义

仔细分析业务流程,划分合适的粒度,使系统的灵活性以及可维护性有较大的提高,避免接口臃肿庞大。

3.        注意事项

(1)接口尽量小,但是要有限度;

(2)接口数量过多,使设计复杂化,多以要适度;

3)提高内聚,减少对外交互

 

 

原创粉丝点击