当前位置:   article > 正文

软件设计模式:创建型,结构型,行为型模式_创建型模式 结构型模式 行为型模式

创建型模式 结构型模式 行为型模式

1.创建型

1.1 工厂方法(Factory Pattern)

每一种产品提供一个工厂类 (1对1

1.2抽象工厂 (Abstract Factory Pattern)

多产品,多工厂(1对多),比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

区别

简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)

工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)  
抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)  

1.3建造者(Builder Pattern)

将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

使用多个简单的对象一步一步构建成一个复杂的对象。

(分块拼起来)

 

1.4单例(Singleton Pattern)

单一的类,该类负责创建自己的对象

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

1.5 原型(Prototype Pattern)

用于创建重复的对象(复制

 

2.结构型

2.1适配器(Adapter)

两个不兼容的接口之间的桥梁(如:读卡器,源接口→目标接口)

2.2代理(Proxy)

一个类代表另一个类的功能

2.3装饰器(Decorator)

允许向一个现有的对象添加新的功能,同时又不改变其结构

(我们将把一个形状装饰上不同的颜色,同时又不改变形状类。)

2.4外观(Facade)

定义了一个高层接口,这个接口使得这一子系统更加容易使用。

2.5桥接(Bridge)

用于把抽象化与实现化解耦,使得二者可以独立变化

2.6组合(Composite)

又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象

2.7享元(Flyweight Pattern)

主要用于减少创建对象的数量,以减少内存占用和提高性能。

(1) 单纯享元模式

(2) 复合享元模式

 3.行为型(11个)

3.1 状态(State)

类的行为是基于它的状态改变的

3.2 策略(Strategy)

一个类的行为或其算法可以在运行时更改

3.3 命令(Command Pattern)

是一种数据驱动的设计模式

3.4 观察者(Observer Pattern)

又被称为发布-订阅(Publish/Subscribe模式

当对象间存在一对多关系时

比如,当一个对象被修改时,则会自动通知依赖它的对象。

3.5 访问者(Visitor Pattern)

表示一个作用于某对象结构中的各元素的操作。

它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

示例

例子:程序要求实现当男人和女人在不同状态下的反应。

男人成功时,背后多半有一个伟大的女人。
女人成功时,背后多半有一个伟大的男人。
男人失败时,闷头喝酒,谁也不用劝。
女人失败时,眼泪汪汪,谁也劝不了。
男人恋爱时,凡是不懂也要装懂。
女人恋爱时,遇事懂也装作不懂。
男女对比这么多的原因就是因为人类在性别上就只有男人和女人两类。

UML图:

3.6 中介者(Mediator Pattern)

用来降低多个对象和类之间的通信复杂性

联合国作为一个由各国代表组成,用来维护国际和平与安全,解决国际间经济、社会、文化和人道主义性质的问题的角色,它就是一个调停者、中介者的角色,国与国直接完全完全可以通过“联合国”这个中介者来发生关系,而不用直接通信。

3.7 迭代子(Iterator Pattern)

迭代器模式

迭代子模式可以顺序地访问一个聚集中的元素而不必暴漏聚集的内部表象。

(1)白箱聚集与外禀迭代子

(2)黑箱聚集与内稟迭代子

宽接口:可修改,白箱聚集,外部
窄接口:不可修改,黑箱聚集,内部

3.8 解释器(Interpreter Pattern)

提供了评估语言的语法或表达式的方式

3.9 备忘录(Memento Pattern)

保存一个对象的某个状态,以便在适当的时候恢复对象

3.10 责任链(Chain of Responsibility Pattern)

 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

3.11 模板方法(Template Pattern)

将重复不变的代码提取到一个抽象类中

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/776132
推荐阅读
相关标签
  

闽ICP备14008679号