设计模式
程画
学生
展开
-
设计模式(一)————策略模式(Strategy Pattern)
定义:封装一组算法,让算法之间可以相互替换 类图: C++实现: #include<iostream> using namespace std; class IStrategy { public: virtual void AlgorithmInterface() = 0; virtual ~IStrategy() = default; }; class Str...原创 2019-06-25 21:32:41 · 118 阅读 · 0 评论 -
设计模式(十一)————状态模式(State Pattern)
定义:允许一个对象在其内部状态发生改变时改变他的行为。对象看起来似乎修改了它的类。(类的行为是基于它的状态改变的,使用状态模式可以有效解决代码中if-else和switch的case太多的问题,使代码更容易维护) UML类图: C++实现: #include<iostream> #include<string> using namespace std; cla...原创 2019-06-26 13:14:56 · 96 阅读 · 0 评论 -
设计模式(十)————装饰者模式(Decorator Pattern)
定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰者模式相比生成子类更加灵活。 UML类图: C++实现: #include<iostream> #include<string> using namespace std; class Beverage { public: string description = "Unkonw Beverage"...原创 2019-06-25 22:17:07 · 105 阅读 · 0 评论 -
设计模式(九)————外观模式(Facade Pattern)
定义:定义一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 UML类图: C++实现: #include<iostream> using namespace std; class Shape { virtual void Draw() = 0; public: virtual ~Shape() = default; }; cla...原创 2019-06-25 22:13:31 · 95 阅读 · 0 评论 -
设计模式(八)————适配器模式(Adapter Pattern)
定义:将一个类的一组接口变换成客户端所期待的另一种接口,从而使因接口不匹配而无法在一起工作的两个类能够在一起工作。类适配器通过集成被适配类和目标类,对象适配器通过组合来适配被适配者。 UML类图: C++实现: #include<iostream> using namespace std; class Duck { public: virtual void Quac...原创 2019-06-25 22:08:04 · 82 阅读 · 0 评论 -
设计模式(七)————模板方法模式(Template Pattern)
定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(工厂方法是模板方法的一个特殊版本) UML类图: C++实现: #include<iostream> #include<string> #include<mutex> #include<stack> u...原创 2019-06-25 22:03:54 · 109 阅读 · 0 评论 -
设计模式(六)————命令模式(Command Pattern)
定义:将请求封装成一个对象,从而让你是用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 UML类图: C++实现: #include<iostream> #include<string> #include<mutex> #include<stack> using namespace std; cla...原创 2019-06-25 22:01:27 · 83 阅读 · 0 评论 -
设计模式(五)————观察者模式(Observer Pattern)
定义: 在对象之间定义一对多的关系,这样一来,当一个对象改变状态,所有依赖他的对象都会收到通知,并自动更新。 (在此模式中,一个目标物件管理所有相依于它的观察者物件。并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的的方法来实现。观察者模式有时又被成为模型-视图(Model-View)模式,源-收听者(Listenr)模式或者从属模式) UML类图: C++实现: ...原创 2019-06-25 21:58:18 · 104 阅读 · 0 评论 -
设计模式(四)————工厂方法模式(Factory Pattern)与抽象工厂方法模式(Abstract Factory Pattern)
工厂方法模式 定义:定义一个创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 UML类图: C++实现: #include<iostream> using namespace std; class Shape { public: virtual void Draw() = 0; virtual ~Shape() = default; ...原创 2019-06-25 21:53:38 · 124 阅读 · 0 评论 -
设计模式(三)————迭代器模式(Iterator Pattern)
定义:提供一种方法顺序访问一个聚合对象中的所有元素而不暴露该对象的内部表示。 UML类图: C++实现: #include<iostream> #include<string> #include<mutex> #include<stack> #include<vector> using namespace std; cl...原创 2019-06-25 21:47:32 · 94 阅读 · 0 评论 -
设计模式(二)————单例模式(Singleton Pattern)
定义:确保某个类只有一个实例,并且自行实例化且向所有类提供这个实例。 单例模式有六种常用的创建方式: 1.懒汉式(线程不安全) 在单线程下,用懒汉式已经足够好了,但是一旦遇到多线程,就有可能出现多个实例。 2.懒汉式(线程安全) 在并发较低的情况下,该方案也可以使用,但是一旦并发较高,线程锁带来的时间消耗将变得不可接受,于是我们有了双重检查锁写法。 3.饿汉式 在一开始就获得一个实例...原创 2019-06-25 21:44:10 · 130 阅读 · 0 评论