设计模式-可复用面向对象软件基础思维导图总结
Xmind文件下载地址:设计模式-可复用面向对象软件基础思维导图总结2
设计模式是前辈总结的针对某些编码的问题的特定解决方案,值得我们好好学习。
设计模式使用说明:
1. 根据业务需要,查看是创建型,结构型,还是行为型
2. 根据具体的类型查找里面的模式,找到能够解决问题的具体某个模式。
设计模式主要分为三类
- 创建型
- 结构型
- 行为型
创建型
抽象实例化对象的过程
参数化
1. 通过创建对象的类的子类 工厂方法
2. 通过对象的组合
工厂方法模式 (Factory Method)
定义一个用于创建对象的接口,让子类决定实例化哪个类
类图:工厂方法
抽象工厂模式(Abstract Factory)
提供一个创建一系列相关或者相互依赖的对象接口,而无需指定它们具体的类
类图:抽象工厂
单例模式(Singleton)
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
类图:单例
建造者模式(Builder)
将一个复杂的对象的创建与它的表示分离,使得构建过程可以创建不同的表示 把创建的过程封装,最终得到对象。
类图:建造者
原型(Prototype)
用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象类图
类图 :原型
结构型
结构型模式设计到如何组合类和对象以获取更大的结构,结构型的模式采用继承机制来组合接口和实现。
适配器(Adapter)
将一个接口转换为客户端需要的接口,类似TypeC转换头
类图:适配器
桥接模式(Bridge)
将抽象与实现分离,使得它们都可以独立地变化。例如:大桥两边的镇与村,二者的经济独立发展。
类图:桥接模式
组合模式(Composite)
将对象组合成“部分-整体”的层级结构。Composite使得用户对单个对象和组合对象的使用具有一致性。比如族谱的结构,实现方式有两种
- 透明的组合模式
- 安全性的
类图:组合模式
装饰者模式(Decorator)
动态的给对象添加额外的职责,相比于生成子类更有灵活性。
类图:装饰者模式
外观模式(Facade)
为子系统的一组接口提供一个一致的界面,Facade模式定义了一些高层接口,这些接口更加容易使用。
类图:外观模式
享元模式(Flyweight)
运用共享及时有效的支持大量的细粒度的对象。比如Java的常量池。
类图:享元模式
代理模式(Proxy)
为其他对象提供一种代理以控制对这个对象的访问,用途可以分为
- 远程代理
- 虚代理(占位符)
- 保护代理
- 智能指针
类图:代理模式
行为型
行为模式涉及到算法和对象间职责的分配,行为模式不仅描述对象或者类的模式,还描述了它们之间的通信模式
- 行为类模式使用继承机制在类间分派行为
- 模板方法
- 解释器
- 行为对象模式使用对象组合而不是类的继承
责任链(Chain of Resposibility)
使得多个对象都有处理机会,避免了发送者与接收者之间的耦合,多个对象串成一条链,而沿着这条链传递请求,直到一个对象处理它为止。比如公司的问责。
类图:责任链
命令模式(Command)
把请求封装成一个对象,从而可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。
类图:命令模式
解释器模式(Interpreter)
给定一个语言,定义它的文法的一种表示,并且定义一个解释器,这个解释器使用该表示来解释语言的句子。
类图:解释器模式
迭代器模式(Iterator)
提供一种方法顺序的访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。
类图:迭代器模式
中介者模式(Mediator)
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。多对多的关系,变为一对多的关系。
类图:终结者模式
备忘录模式(Memento)
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
类图:备忘录模式
观察者模式(Observer)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并被自动更新。
类图:观察者模式
状态模式(State)
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
类图:状态模式
策略模式(Strategy)
定义一系列算法,把它们一个一个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
类图:策略模式
模板方法(Template Method)
定义一个算法的骨架,而一些步骤延迟到子类中。模板方法使得子类不改变结构即可重新定义该算法的步骤。
类图:模板方法
访问者模式(Visitor)
表示一个作用于某个结构中的各个元素的操作。它使你可以在不改变各个元素的类的前提下定义作用于这些元素的新操作, 对象结构必须稳定,不能经常变化。
类图:访问者模式