设计模式的六大原则有:
Single Responsibility Principle:单一职责原则
Open Closed Principle:开闭原则
Liskov Substitution Principle:里氏替换原则
Law of Demeter:迪米特法则
Interface Segregation Principle:接口隔离原则
Dependence Inversion Principle:依赖倒置原则
把这六个原则的首字母联合起来就是 SOLID (solid,稳定的),其代表的含义就是这六个原则结合使用的好处:建立稳定、灵活、健壮的软件设计
单一职责原则:能引起类变化的原因只有一个,类的设计尽量做到一个原因引起变化
开闭原则 通过类的扩展实现类的变化,而不是通过修改。从而减少对原来的健壮性代码的修改。
里氏替换原则 父类出现的地方都能用子类进行替换,但是这是最终的目的,怎么才能实现这个目的才是里氏替换原则的理念
1.子类必须完全实现父类的方法,其意义是子类必须实现父类的所有方法,并且要贯彻好父类业务的思想,不能继承其方法而与其父类的功能理念不一样
2.子类可以有自己的属性和方法,与上一条不冲突,意思是父类是子类的一个子集,但是尽量避免子类出现自己的个性
3.覆盖和实现父类的方法的时候输入参数可以被放大,试想如果不满足的话岂不是无法实现里氏替换
4.覆盖和实现父类的方法的时候输出参数可以被缩小
接口隔离原则
类间的依赖关系应该建立在最小的接口上
也就是一个接口的方法应该尽量的少
依赖倒置原则
依赖倒置原则在java语言中的表现
1.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的
2.接口或者抽象类不依赖于实现类
3.实现类依赖接口或抽象类
对象的依赖的传递方式
1.构造函数传递依赖对象
2.setter方法传递依赖对象
3.接口声明依赖对象
迪米特法则(最少知识法则)
1.一个类只和自己的朋友类产生耦合关系,朋友类指的是出现在成员变量、方法的输入输出参数中的类称为成员朋友类
2.对朋友类的方法知道的越少越好
3.如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中
另外从设计模式之禅中领悟理解