设计模式之七大设计原则
一。开闭原则
1.开闭原则是设计模式中的总原则,开闭原则就是说:对拓展开放,对修改关闭
2.模块应该在尽量不修改代码的前提下进行拓展,这就需要使用接口和抽象类来实现 ,并使用子类拓展来实现 (接口A——实现类——继承实现类,复写父类方法)
3.开闭原则要求我们尽可能通过扩展来实现变化,尽可能少的改变已有模块,特别是底层模块。
总结:提高代码复用性 提高代码的可维护性。
二。单一职责原则
1.保证设计类,接口,方法时做到功能单一,全责明确。
修改为
单一职责原则,指的是一个类或者模块有且只有一个改变的原因
单一职责可以降低类的复杂性,提高代码可读性、可维护性
但是用“职责”或“变化原因”来衡量接口或类设计的是否优良,“职责”或“变化原因”都是不可度量的,要因项目、环境而已;
三。里氏替换原则
1.所有引用基类的地方必须能透明地使用其子类的对象(只要父类出现的地方子类都可能出现,并且使用子类替换父类不会产生任何异常或错误),反过来有子类的地方就不一定能使用父类替换
2.里氏替换原则是开闭原则的实现基础,他告诉我们设计程序的时候尽可能使用基类进行对象的定义及引用,具体运行时再决定基类对应的具体子类型
Person类中本该出现的父类AbstractAnimal我们运行时使用具体子类代替;
四。依赖倒置原则
程序要依赖于抽象接口,不要依赖具体实现,简单说就是要对求对抽象进行编程,不要对实现进行编程,这样就降低客户与实现模块间的耦合
面向接口编程实例
五。接口隔离原则
客户端不应该依赖它不需要要的接口,类间的依赖关系应该建立在最小的接口上。(建立单一接口,不要建立臃肿庞大的接口,接口尽量细化,同时接口中方法尽量少,保持纯洁,尽量的粒度化)
原则 1.接口尽量粒度化,保持接口纯洁性2.接口要高内聚,既减少对外交互。
六。迪米特法则
也叫最少知识原则,一个软件实体应当尽可能少地与其它实体发生相互作用,它的初衷在于降低类之间的耦合
public class Girl {
}
public class GroupLeader {
private final List<Girl> girls;
public GroupLeader(List<Girl> girls) {
this.girls = girls;
}
public void countGirls() {
System.out.println("The sum of girls is " + girls.size());
}
}
public class Teacher {
public void command(GroupLeader leader){
leader.countGirls();
}
}
public class Main {
public static void main(String[] args) throws Exception {
Teacher teacher = new Teacher();
GroupLeader groupLeader = new GroupLeader(Arrays.asList(new Girl(), new Girl()));
teacher.command(groupLeader);
}
}
七。合成复用原则
通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象功能,从而达到复用
合成和聚合都是关联的特殊种类,合成是值的聚合,而复合是引用的聚合
类之间的三种基本关系 关联(聚合和组合)、泛化(与继承同一概念)、依赖
原则
新对象可以调用已有对象的功能,从而达到对象复用
总结