首页 > 代码库 > 设计模式与系统架构学习笔记之设计模式部分

设计模式与系统架构学习笔记之设计模式部分

模式:

一个特定的环境,一个问题,一个解决方案

核心思想:进行设计的复用

环境+问题+解决方案

 

设计模式:描述了定制化的相互通行的对象与类,以及解决特定环境中的通用设计问题。

 

单例模式:

确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。

解决方案:

将构造函数声明称私有类型,屏蔽通过直接实例化的形式来访问;

控制全局只有一个实例的类-Static

提供一个可以获得实例的方法,用于返回类的实例,并且保证得到的是同一个对象;

(是否已经存在,存在的话,直接返回;不存在的话,创建新的实例,再对外返回)

 

 

开闭原则:

对扩展开放,对系统修改封闭

抽象化是开闭原则的关键。

 

单一职责原则:

高内聚性原则

避免相同的职责(也称为功能)分担到不同的类中实现;

避免一个类承担过多的职责;

减少类之间的耦合关系;

“发现职责”并“分离职责”;

工厂模式:分离对象的“创建”和对象的“使用”

模板方法模式:分离“共性功能实现”和“个性扩展”

命令模式:分离“命令的请求者”和“命令的实现者”

 

里氏替换原则:

主要针对继承的设计原则;

子类型必须能够替换掉他们的父类型,并出现在父类能够出现的任何地方;

子类可以扩展父类的功能,但不能改变父类原有的功能;

原则:

子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;

子类可以增加自己特有的方法;

当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松;

当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格;

 

依赖倒置原则:

将依赖关系倒置为依赖接口

上层模块不应该依赖于下层模块,他们共同依赖于一个抽象;

父类不能依赖子类,他们都要依赖抽象类;

抽象不能依赖与具体,具体应该要依赖于抽象;

 

接口隔离原则:

一个类对另外一个类的依赖性应该是建立在最小的接口上;

客户端不应该依赖那些他不需要的接口;

如何避免不良好的接口设计:

用多个专门的接口,而不是用单一的总结口;

一个接口就只代表一个角色;

使用接口隔离原则拆分接口时,首先必须满足单一职责原则

 

合成复用原则:

又称为组合/聚合复用原则;

尽量使用对象组合,而不是继承来达到复用目的;

一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象;

新对象通过委派调用已有对象的方法达到复用其已有功能的目的。

要尽量使用组合/聚合管理,少用继承。

 

迪米特法则:

要求一个软件实体应该尽可能少的与其他实体发生相互作用

 

                      (未完待续……)

设计模式与系统架构学习笔记之设计模式部分