本专栏将从基础开始,循序渐进,由浅入深讲解常见的设计模式,希望大家都能够从中有所收获,也请大家多多支持。
专栏地址:设计模式实战
所有代码地址:代码地址
如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。
文章目录
- 1 七大软件架构设计原则
-
- 1.1 开闭原则(修改关闭)
- 1.2 依赖倒置(函数的参数使用抽象)
- 1.3 单一职责(只负责一个功能)
- 1.4 接口隔离(不实现不需要的接口)
- 1.5 迪米特法则(能封装就封装)
- 1.6 里氏替换(不改变父类)
- 1.7 合成复用(成员变量使用抽象)
1 七大软件架构设计原则
1.1 开闭原则(修改关闭)
允许对类进行继承扩展,不允许对源代码进行修改。例如水果工厂类中每增加一个水果,都要对水果工厂类进行修改,重新编译。如果水果工厂类FruitFactory只是定义接口生产水果,苹果applefactory、梨子pearfactory等工厂类单独实现fruitfactory接口类,创建不同的水果对象,各种水果的创建互不影响,新增水果,只要新增一种水果类继承fruitfactory,不会对fruitfactory类进行修改,这就是对扩展开发,对修改关闭。
1.2 依赖倒置(函数的参数使用抽象)
其核心就是面向接口编程,即当调用的类可能会拓展时用接口代替相应的类。
未使用依赖倒置:
上述看着没什么问题,但是如果他不想买青菜,想买萝卜怎么办们当然可以新建一个萝卜类,再给他弄一个buy方法,但是问题是People并没有操作萝卜类的方法,我们还需要在People添加对萝卜类的依赖。这样代码要修改的代码量太多了,模块与模块之间的耦合性太高,只要需要稍微有点变化,就要大面积重构,所以该设计不合理。
使用依赖倒置:
1.3 单一职责(只负责一个功能)
一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化。如A类只负责功能A,B类只负责功能B,不要让A类既负责功能A,又负责功能B,这样会导致代码混乱,容易产生bug。
1.4 接口隔离(不实现不需要的接口)
将接口细化**,**类继承接口,类中不需要实现不需要的接口。
1.5 迪米特法则(能封装就封装)
最小关系原则,也就是说如果一个代码块能独立封装在一个类的函数中则最好不要放在调用处。
反例如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!