本文是以个人理解最通俗的话进行解释
这里的第七个原则有的地方可能没有
一,单一职责原则
所谓的单一职责原则就是只负责一个职责
示例:有车和船,分别有陆地上跑和水里游的特点,如果只写一个run的方法,在里面判断如果是车就输出在陆地上跑,如果是船在水里游。这时很明显就违反了单一职责原则,
解决方法:建立一个在路上跑的类和在水里游的类,new对象的时候根据各个种类传进去,这样一个类只负责一个职责!
缺点:类爆炸,造成的类过多
二,接口隔离原则
就是一个类实现一个接口,但是吧,里面的方法不一定都用得到,违反了该原则,需要把接口拆开。
示例:如果有个接口A,里面有抽象方法a1,a2,a3,a4。类B实现了该接口,但是类B只想使用里面的a1,a2。但又不得不实现a3,a4。这是就违反了该原则,应该讲接口A拆开。客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
三,依赖倒转原则
就是面向接口编程
依赖传递的三种方式(都是利用传参实现)
1,接口传递
2,构造方法传递
3,set方法传递
四,里式替换原则
一句话总结:不要重写父类中的有特定功能的方法
实例:A类中有a1方法,传两个int参数,里面计算两个数的差,然后你类B继承A,重写a1,变成计算两个数的和,这里就违反了。因为A中人们将其理解为a1就是计算差的,B改变了a1的性质。更改的方法可以是设置一个Base的基类,里面有a1抽象方法,这时a1没有什么含义,A继承赋予了差的含义,B继承赋予和的含义,降低了耦合性
https://www.cnblogs.com/zyzblogs/p/11274288.html可参考的博客
五,开闭原则
对扩展进行开,对修改关。变化时是扩展而不是修改
尊崇的是可以括扩展,但不修改,对修改是关闭的,对扩展是开放的
六,迪米特法则
这个法则理解的前提是我们要知道在一个类中使用另一个类的对象的方式
1,在类中定一个全局变量直接new
2,通过方法传参进行传进来
3,来方法内直接new
直接朋友:通过参数传进来或者一个get方法返回一个对象
不直接朋友:比如在一个方法中new一个对象
如果遇到不直接朋友,将相应的代码写到传过来的那个类里面比较好
七,合成复用原则
基本介绍:原则是尽量使用合成/聚合的方式,而不是使用继承
依赖关系:在b类中写个方法,传参进去
聚合关系:一个A类对象的成员变量,通过set方法设置进来
组合关系:b类中A是成员变量,直接new
小结
设计模式就像独孤九剑一样,招式是死的,认识活的。设计模式只重其意,不重其招。只有不拘于招式,变化自如,才能达到剑法的最高境界。我们学习设计模式是学习的思想,无所谓形式