设计模式之七大设计原则

一。开闭原则

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);
}
}

 

 七。合成复用原则

通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象功能,从而达到复用

合成和聚合都是关联的特殊种类,合成是值的聚合,而复合是引用的聚合

类之间的三种基本关系     关联(聚合和组合)、泛化(与继承同一概念)、依赖

 

 

 

 原则

新对象可以调用已有对象的功能,从而达到对象复用

总结

 

 

 

 

 

posted on 2019-11-26 16:00  cwone  阅读(315)  评论(0编辑  收藏  举报