24设计模式
2023-03-21 23:28:20 12 举报
AI智能生成
24种设计模式,详细思维导图,软考必备,本人已过
作者其他创作
大纲/内容
创建型 实现,继承<br>
Abstract Factory (抽象工厂)<br>
意图
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类
结构<br>
AbstractFactory
声明一个创建抽象产品对象的操作接口<br>
Concrete(具体的)Factory<br>
实现创建具体产品对象的操作<br>
AbstractProduct
为一类产品对象声明一个接口<br>
ConcreteProduct
定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct<br>
Cilent <br>
仅使用由AbstractFactory和AbstractProduct类声明的接口<br>
适用性
一个系统独立于产品创建<br>
一个系统要由多个产品系列中的一个来配置
说明结构有两种不同的产品组合使用的情况
产品类库接口<br>
重点是提供接口
Builder(生成器)
意图 <br>
将一个复杂对象的构建与他的表示分离,是的同样的构建过程可以创建不同的表示
结构
Builder<br>
创建一个Product对象的各个部件指定抽象接口<br>
ConcrateBuilder <br>
实现builder接口<br>
Director <br>
指定一个使用Builder接口的对象<br>
Product
表示被构造的复杂对象<br>
适用性
当构造过程必须允许被构造对象有不同表示时
复杂对象算法应该独立于该对象的组成部分时
Factory Method<br>
意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类<br>
结构 <br>
Product<br>
定义工厂方法创建的接口
ConcreteProduct <br>
实现Product接口<br>
Creator
声明工厂方法,该方法返回一个Product对象
ConcreteCreator<br>
返回ConCreteProduct实例<br>
适用性
一个类不知道对象的类<br>
一个类希望由他子类指定
类将创建对象的职责交个子类
Prototype(原型)
意图
用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
结构<br>
Prototype
声明一个复制自身的接口
ConcretePrototype
实现Prototype接口<br>
Client
让一个原型复制自身
适用性
一个系统独立于他的产品创建
动态装载
避免创建一个与产品类层次平行的工程类层次时
Singleton (单例)<br>
意图
保证一个类仅有一个实例
结构
Singleton
Instance操作
Instance
创建唯一实例
适用性
只有一个实例
唯一实例可通过子类化扩展<br>
总
Abstract Factory和Builder和Prototype关键特征“工厂对象”,其中工厂对象和原型为同一个对象
结构型 接口,组合<br>
Adapter(适配器)
意图
将一个类的接口转换为客户需要的接口
结构
Target
定义C李恩同事用的与特定领域相关的接口
Client
Target接口的对象协同
Adaptee
定义一个已经存在的接口,这个接口需要适配
Adapter
对Adaptee与Target接口适配
适用性
已经存在的类但接口不符合要求
可以与其他不相关类协同工作
不可能对每一个类都进行子类化以匹配他们的接口
Bridge(桥接)
意图<br>
将抽象部分与其实现部分分离
结构
Abstraction
定义抽象类接口
RefinedAbstraction
扩充由Abstraction定义的接口
Implementor
定义实现类的接口
ConcreteImplementor
实现Implementor接口
适用性
不希望有绑定关系
类的抽象以及他的实现都应该可以通过生成子类的方法加以扩充
客户代码不必从新翻译
完全隐藏抽象的实现部分
想在多个对象间共享实现,但同时要求客户并不知道这一点
Composite(组合)
意图
部分-整体
结构
Component
为组合中的对象声明接口
Leaf
在组合中定义图元对象的行为<br>
Composite
定义有子组件的那些组件的行为
Client
通过Component接口操纵组合组件对象
适用性
部分-整体
希望用户忽略组合对象与单个对象的不同
Decorator(装饰)
意图
动态的给一个对象添加一些额外的职责
结构
Component
定义一个对象接口,可以给这些对象动态的添加职责
ConcreteComponent
实现
Decorator
维持一个指向Component对象的指针
ConcreteDrcorator
向组件添加职责<br>
适用性
添加职责
处理那些可以撤销的职责
当不能采用生成子类的1方法进行扩充时
Facade(外观)
意图
提供一致界面
结构
Facade
知道哪些子系统类负责处理请求
Subsystem classes<br>
实现子系统的功能
适用性
为复杂子系统提供一个简单接口
客户程序与抽象类的实现部分之间存在很大的依赖性,为提高独立性和移植性
当需要构建一个层次结构的系统时
Flyweight(享元)
意图
支持大量细粒度的对象
Proxy(代理)
意图
提供代理
总
Adapter模式和Bridge模式的区别:适配器在类定以后使用,桥接在类定义前
Composite和Decorator通常协同使用
行为型 功能,状态,行为,职责分配<br>
Chain of Responsibility(责任链)<br>
意图
将对象连成一条链
适用性
多个对象处理一个请求
想在不明确指定接收者的情况下向多个对象中的一个提交一个请求
Command(命令)
意图
将一个请求封装为一个对象
适用性
支持取消操作
支持修改日志<br>
在不同的时刻指定,排列和执行请求
Interpreter(解释器)
意图
定义一个解释器
适用性
文法简单
效率不是一个关键问题
Iterator(迭代器)
意图<br>
顺序访问聚合对象中的各个元素
适用性
支持对聚合对象的多种遍历
聚合对象
Mediator(中介者)
意图<br>
中介对象封装一系列对象交互
适用性<br>
一组对象之间的复杂通信
通信直接
不想生成太多子类
Memento(备忘录)
意图
不破坏封装性的前提下捕获一个对象的内部状态
适用性
保存状态<br>
在会被破坏封装性的情况下<br>
Observer(观察者)
意图
一个对象状态改变,其余依赖他的对象接到通知并被自动更新
适用性
一个改变其他
相互依赖,独立改变并复用
State(状态)<br>
意图
对象似乎修改了他的类
适用性
根据状态改变行为
一个操作中含有庞大的多分支语句,且这些分支依赖于该对象的状态
Strategy(策略)
意图
定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换
适用性<br>
许多相关的类仅仅是行为有异<br>
需要使用一个算法的行为变体
算法使用客户不应该知道的数据
一个类定义了多种行为
Template Method(模板方法)<br>
意图
算法骨架
适用性
提取公共部分
控制子类扩展
Visitor(访问者)
意图
不改变各元素类的前提下定义元素的新操作
适用性
定义操作
<br>
0 条评论
下一页
为你推荐
查看更多