设计模式学习
Jon Yu
这个作者很懒,什么都没留下…
展开
-
状态模式
状态模式:当一个对象状态转换的条件表达式过于复杂时,状态模式通过把状态的判断逻辑转移到表示不同的状态的一系列类中,从而把复杂判断逻辑简化。通过添加新的子类可以很容易的增加新的状态。类图:关键代码:// State.hclass Context;class State{public: State(); virtual ~State(); virtual void han...原创 2020-04-19 16:27:54 · 127 阅读 · 0 评论 -
装饰模式
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式通过把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时根据需求选择地、按顺序地使用装饰功能包装对象。装饰模式能够有效的把类的核心职责功能和装饰功能区分开,同时可以去除重复的装饰逻辑。类图:核心代码:// ConcreteC...原创 2020-04-19 15:59:42 · 178 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转换为客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。由于一个系统可能因不同的开发人员、不同的产品、不同的厂家而造成功能类似而接口不同,有点亡羊补牢的意思。此时,系统的行为与数据都正确,接口不一致,考虑使用适配器。类图:核心代码:// Adaptee.h#include <iostream>class Adap...原创 2020-04-18 11:45:47 · 121 阅读 · 0 评论 -
桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化。实现系统可能有多角度分类,每一种分类都有可能变化,每一种分类都有可能变化,桥接模式通过合成聚合原则代替继承把这种多角度分离出来让它们独立变化,减少系统的耦合度。类图:关键代码:// RefinedAbstraction.h#include "Abstraction.h"class RefinedAbstraction ...原创 2020-04-16 09:52:21 · 162 阅读 · 0 评论 -
建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。用户只需要指定需要建造的类型就可以得到它们,而具体建造过程和细节就不需要知道了。构建者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建过程通常面临这变化。构建者的好处是使得构建代码与表示代码分离,由于构建者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示...原创 2020-04-16 09:32:08 · 138 阅读 · 0 评论 -
外观模式(门面模式)
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。类图:关键代码:// Facade.h#include "SystemC.h"#include "SystemA.h"#include "SystemB.h"class Facade{public: Facade(); virtual ~Facade();...原创 2020-04-15 16:11:36 · 101 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式:提供创建一系列相关或相互依赖对象的借口,而无需指定它们具体的类。适用于产品种类结构多的场合,主要用于创建一组(有多个种类)相关的产品,为它们提供创建的接口;就是当具有多个抽象角色时,抽象工厂便可以派上用场。类图:关键代码:// AbstractFactory.h#include "AbstractProductA.h"#include "AbstractProductB...原创 2020-04-14 21:04:57 · 114 阅读 · 0 评论 -
工厂方法模式
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。通过在工厂类中包含必要的逻辑判断,根据客户端的选择条件动态实例化相关类,对客户端来说,去除了对具体产品的依赖。类图:// ConcreteFactory.h#include "Product.h"#include "Factory.h"class ConcreteFactory : public Factory{...原创 2020-04-14 20:39:13 · 592 阅读 · 0 评论