设计模式之禅(1)-设计准则

  最近几周一直都在看设计模式之禅,看的过程当中,发现大多数的设计模式在平时编码过程当中使用到了,当时没意识到这就是设计模式的一种,翻看自己以前的代码,有些设计显然和设计模式的标准有出入,但是个人认为设计模式只是6大设计准则的具体标准实现。在具体项目中,应当灵活的根据设计准则设计出灵活的代码。只要代码扩展度高,复杂度低,这就是个好设计。但同时,6大设计准则和23大设计模式我们也要了然于心,好的程序猿的每一行代码都应是一个很好的设计。

 

 6大设计原则


 

1.单一职责:(SRP)

一个方法尽量只做一件事,一类只能因为一个原因发起变更。但是在实际的项目中,类的职责划分是比较难有清晰的界限的,一些好的设计往往会违背单一职责。

里氏替换原则

为继承定义了一个规范:

1. 子类必须完全实现父类的方法
2. 子类可以有自己的特性
3. 重载或者重写父类方法时输入参数可以被放大
4. 重载或者重写父类方法时输出结果可以缩小

依赖倒置原则

1. 高层模块不依赖于底层模块,两者都依赖于抽象
2. 抽象不依赖于细节
3. 细节依赖抽象

底层模块:不可分割的原子逻辑

高层模块:多个底层模块组成合成

在Java中更为精简的定义就是:面向接口编程,模块直接的依赖通过抽象发生,实现类之间不直接发生依赖关系,

举一个反例:司机开车,下图是司机开奔驰车,如果司机现在换了一辆宝马车,这个类图的改动就比较大了

 

如果更具依赖倒置原则,合理的类图应当如下

接口隔离原则

接口职责清晰,不要一个接口一堆方法,尽量一个接口只服务一个模块。

迪米特法则

也被称之为最少知识原则,不要对外公布自己的太多细节,尽量不要有太多的public属性,对外只公布一个public方法,保障自己的属性在自己的控制范围之内。

开闭原则

对扩展开放,对修改关闭。细致来说:如果代码需要有变动,应当通过扩展来实现变动,尽量不修改已有的代码

猜你喜欢

转载自www.cnblogs.com/xmzJava/p/9013364.html