第四节课 23设计模式分类说明

来源:互联网 发布:qq三国js高配灵魂搭配 编辑:程序博客网 时间:2024/05/27 00:48

设计模式

写在前面的话: 如果不深刻理解面向对象程序设计思想,理解和使用各种设计模式就是无源之水,无本之木。

模式名称

定义

说明

角色对象

优点缺点

符合原则

创建型模式       如何实例化对象

 

简单工厂模式

 

通过选择不通的参数,创建不通的对象

在代码里分别选择

 

 

 

 

一个简单工厂对象

多个实现对象

优点:简单明了;使用的对象少

部分符合:里氏代换原则

缺点:

1、增加新的创建对象需要修改源代码,违反开闭原则

2、容易成为万能工厂,违反单一职责

工厂方法模式

Factory Method

通过选择不通的工厂对象创建不通的对象。工厂对象和实现对象一一对应

在包里集中体现

 

 

一个抽象工厂对象

多个方法工厂对象

一个抽象对象

多个实现对象

优点:符合开闭原则

里氏代换原则

依赖倒转原则

开闭原则

对象多繁琐

抽象工厂模式

Abstract Factory

通过选择不通的工厂对象创建一系列对象

 

一个抽象工厂对象

多个实现工厂对象

多个系列抽象对象

多个系列实现对象

对象抽象度高,减少了工厂对象

里氏代换原则

依赖倒转原则

开闭原则

缺点:归类成一系列不容易

建造者模式

Builder

通过类模板创建多个对象

有一个类模板。通过不同的建造对象,可以生成不同的新对象。通过指挥者选择不通的建造对象实现不同对象的创建

一个指挥对象

一个抽象建造者

多个创建者对象

一个产品模板对象

对象的创建

聚合关系、组合关系的对象适用

 

 

缺点:不直观

原型模式

Prototype

通过对象模板创建多个对象

有一个对象模板。通过深克隆或浅克隆,创建一个新对象,然后对新对象进行处理

一个抽象对象类

多个实现对象类

 

聚合关系、组合关系的对象适用

 

单例模式

Singleton

通过自己创建自己

自己创建自己,保证唯一实例

单个对象

 

 

结构模式          如何使用已有的类或对象组合成一个新的类或对象或改变对象的结构

 

适配器模式

Adapter

类适配器

对象适配器

类适配器:C类调用的B接口,但是想用A类的函数。D适配器继承A类和B接口。

对象适配器:C类调用的B接口,但是想用A对象的函数。D适配器继承B接口,引入A对象。

增加一个适配器类继承AB接口

或继承B,引入A

 

不增加新成员,属性或方法

通知增加新的适配器类来替换代码的修改。

满足开闭原则

 

 

 

缺点:多了一个适配器类

 

桥接模式

Bridge

一个对象的结构成员根据抽象可以实现不同的对象。当前类有不同的变化,当前类的成员类也有不同的变化。

可变化的成员必须是接口或虚类。不增加新成员。

 

 

 

组合模式

Composite

组合成树叶节点结果的对象

 

 

 

 

装饰模式

Decorator

不改变原来对象的情况下增加新的成员(函数或属性)

增加新的成员

增加一个装饰类

在装饰类中增加成员,属性或方法。

意思是改变类的职责

 

 

外观模式

Façade

抽取出多个对象的公共成员,组成一个接口对象。

不增加新成员,增加新的接口

增加一个新的接口类

 

 

享元模式

Flyweight

多个相同的对象,变成一个对象。类型单例模式

将多个重复的对象,变成一个对象

 

 

 

代理模式

Proxy

将一个对象封装起来,通过代理对象访问封装对象

给对象套一个壳子

 

 

 

行为模式          特定环境下对象和对象关系的变化

 

职责链模式

Chain of

 Responsibility

多个节点按照顺序执行一个对象

用户只关心提交的被执行的对象。不关心执行过程

 

 

 

命令模式

Command

 

用户只关心

一个执行目录对象

多个命令对象

一个或多个被执行对象

 

 

解释器模式

Interpreter

 

 

 

 

 

迭代模式

Iterator

多个集合对象,按照顺序遍历访问

用户只关心

 

 

 

中介模式

Mediator

 

 

 

 

 

备忘录模式

Mediator

 

记录对象的状态变化,以编译重新返回。

 

 

 

观察者模式
Observer

 

一个对象的变化会引发多个相关对象的变化。用户只要改变目标对象,不关心相关观察者对象

 

 

 

状态模式

State

 

 

 

 

 

策略模式

Stratergy

 

同一个问题,不通角度的实现

 

 

 

模板方法模式

Template Method

 

一系列解决问题的模板

 

 

 

访问者模式

Visitor

 

 

 

 

 

 

 

 

原创粉丝点击