设计模式学习总结

设计模式学习总结

一、设计模式的分类

总体来说设计模式分为三大类:

创建型模式:

Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。

FactoryMethod,AbstractFactorv.Builder都需要一个额外的工厂类来负责实例化“易变对象 而Prototype则是通过原型(一个特殊的工厂类)来克隆“易变对象”。

如果遇到“易变类”,起初的设计通常从FactoryMethod开始:当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式。

,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式:

Adapter模式注重转换接口,将不吻合的接口适配对接Bridge模式注重分离接口与其实现,支持多维度变化Composite模式注重统一接口,将“一对多”的关系转化为“一对一”的关系

Decorator模式注重稳定接口,在此前提下为对象扩展功

D Facade模式注重简化接口,简化组件系统与外部客户程序的依赖关系

Flyweight模式注重保留接口,在内部使用共享技术对对象存储进行优化

Proxy模式注重假借接口,增加间接层来实现灵活控制。

,共7种:适配器模式(Adapter),桥接模式(Bridge),组合模式(Composite),装饰器模式(Decorator),外观模式(Facade),享元模式(Flyweight),代理模式(Proxy)。

行为型模式:

Template Method模式封装算法结构,支持算法

子步骤变化

Strategy模式注重封装算法,支持算法的变化

State模式注重封装与状态相关的行为,支持状态

的变化

Memento模式注重封装对象状态变化,支持状态

保存/恢复

Mediator模式注重封装对象间的交互,支持对象

交互的变化

,共11种:Template Method模版方法、Command命令、Interpreter解释器、Mediator中介者、Iterator迭代器、Observer观察者、Chain of Responsibility职责链、Memento备忘录、State状态、Strategy策略、Visitor访问者。

 

 

 

二、设计模式的六大原则

1、开放封闭原则(Open Close Principle):对扩展开放,对修改关闭。

2、里氏替换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。

3、依赖倒置原则(Dependence Inversion Principle):针对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle):拆分大接口,使用多个隔离接口,降低类间耦合。

5、迪米特法则(最少知道原则)(Demeter Principle):最少知道原则,一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、单一职责原则(Single Responsibility Principle):不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,否则就应该把类拆分。

三、23种设计模式

1.创建型模式(5种)

(1)工厂方法模式:创建同一接口的封装对象。

(2)单例模式:类只实例化一次

  1. 建造者模式:用来创建复合对象,隐藏实现细节。

(4)原型模式:对象复制,减少对象创建。

(5)抽象工厂模式:是对工厂模式的扩展,对工厂进行更高层的抽象,便于更换添加工厂和实现类。

2.结构型模式(7种)

(1)适配器模式:类、对象、接口适配器,将接口转换成另一个目标接口,消除不兼容问题。

(2)装饰器模式:给对象添加动态的添加功能。

(3)代理模式:用另一个类来代替原对象执行操作。

(4)外观模式:将多个类放到一个类中,降低类间耦合度。

(5)桥接模式:事物内部抽象类具体实现不同,相同方法产生不同结果,分离抽象和实体。 (6)组合模式:部分整体的结构,类似树形结构

(7)享元模式:对象共享池

3.行为型模式(11种)

(1)策略模式:相同接口,不同实现类,同一方法结果不同,实现策略不同。

(2)模板方法模式:父类执行子类功能,但由子类实现。

(3)观察者模式:子类的动作,观察者能即使发现做出反应。

(4)迭代器模式:顺序遍历对象。

(5)职责链模式:每个类持有下个对象的引用,形成链条。

(6)命令模式:调用者通过中间类让接受者执行指令。

(7)备忘录模式:备份模式,记录自生参数,需要的时候恢复。

(8)状态模式:改变状态参数,相同方法不同实现

(9)访问者模式:通过接收访问者类,让访问者类改变主类的行为。

(10)中介者模式:通过中介者类管理另外几个类的关系。

(11)解释器模式:解释一种模式,比如正则表达式的解释器。

设计模式建立在对系统变化点的基础上进行,哪里有变化点,哪里应用设计模式。设计模式应该以演化的方式来获得,系统的变化点往往是经过不断演化才能准确定位。

不能为了模式而模式,设计模式是一种软件设计的软力量,而非规范标准。不应夸大设计模式的作用。

 

posted @ 2021-03-04 16:08  雾岛风起时  阅读(130)  评论(0)    收藏  举报