设计模式
文章平均质量分 78
铲灰
平凡的一个人
展开
-
C++观察者模式
#include <iostream>#include <vector>#include <algorithm>using namespace std;///加深点印象///定义了事件类型///业务类可以根据事件类型来判断那条消息需要处理, 不需要的消息就过滤掉///业务类只有一个收到消息的入口就是OnEvent函数,如果使用单例模式的话,以后开出接口的机会一定会越来越多typedef enum Event{ event1 = 1, ...原创 2021-04-02 16:54:13 · 179 阅读 · 0 评论 -
建造者模式
#include <iostream>#include <string>#include <stdio.h>#include <vector>using namespace std;/** 建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方法时适用的模式*////产品类,由多个部件组成class Product{public: Product(){} virtual ~Product()...原创 2020-12-12 14:08:21 · 89 阅读 · 1 评论 -
C++外观模式
#include <iostream>using namespace std;/** 何时使用外观模式:* 这要分三个阶段来说,首先,在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层的层与层之间建立外观Facede,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也会产生很多很小的类,这本是好事,但也给外部调用他们..原创 2020-11-17 10:22:53 · 160 阅读 · 0 评论 -
C++模板模式
#include <iostream>#include <string>using namespace std;///所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复///模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤///模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势///模板方法模式就是提供了一个很好的代码复用的平台。因为有时候,我们会原创 2020-11-05 19:57:36 · 209 阅读 · 0 评论 -
工厂方法模式
#include <iostream>#include <stdio.h>using namespace std;///基类存放数据,子类存放操作class Operation{public: virtual double GetResult() = 0; double NumberA; double NumberB;};class OperationAdd : public Operation{public: virtual...原创 2020-10-20 20:20:55 · 51 阅读 · 0 评论 -
C++ 代理模式
#include <iostream>#include <string>using namespace std;///代理接口class IGiveGift{public: virtual void GiveDolls() = 0; virtual void GiveFlowers() = 0; virtual void GiveChocolate() = 0;};///被追求者类class SchoolGirl{public:...原创 2020-10-09 17:29:04 · 187 阅读 · 0 评论 -
策略模式
#include <iostream>#include <string>#include <stdlib.h>using namespace std;///算法的基类class CashSuper{public: ///算法的接口 virtual double acceptCash(double money) = 0;};class CashNormal : public CashSuper{public: virtua...原创 2020-09-23 09:21:23 · 68 阅读 · 0 评论 -
简单工程模式
#include <iostream>#include <string>using namespace std;///基类存放数据class Operation{public: double GetNumberA() { return _numberA; } double GetNumberB() { return _numberB; } void SetNumberA(doub...原创 2020-09-10 13:50:01 · 139 阅读 · 0 评论