设计模式
机智的程序员小熊
《Go语言进阶之路开源书》作者,监控云领域,大厂横跳,掌握Go、Python,熟悉C++、算法。拥有完整的前后端运维产品服务团队。
展开
-
桥接模式
目的:将抽象与实现相分离。 定义:将抽象部分与它的实现部分分离,使他们都可以独立地变化。 (抽象与实现分离是指让每种实现的变化不会影响到其他实现,从而打到应对变化的目的) 代码如下: #include <list> #include <iostream> #include <string> using namespace std; /*实现*/ class Implementor{ p原创 2015-05-03 11:55:55 · 902 阅读 · 0 评论 -
职责链模式(Chain of Responsibility)
2015/5/18 职责链模式(Chain of Responsibility): 避免发送者和接受者之间的耦合关系,将对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 优点:发送者不用考虑众多接受者之间的数据流,简化了对象的相互链接(仅保持指向后继)。 代码如下:#include <iostream> #include <vector> using namespace s原创 2015-05-18 02:47:18 · 858 阅读 · 0 评论 -
策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。优点:替代了继承,降低了耦合性#include <iostream> using namespace std; /*我们来陪电脑*/ class Base{ protected: string name; public:原创 2015-05-18 03:14:18 · 910 阅读 · 0 评论 -
模版方法模式
模版方法模式(TemplateMethod) 当我们要完成某一细节或者层次一致但是其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模版方法模式来处理。 —————《大话设计模式》 代码如下#include <iostream> using namespace std; /* 模版方法模式与模版不同 但是基本思想是一样的。 都是不重复的做相同的事情 */ /*模版方法模式*原创 2015-05-18 01:57:04 · 879 阅读 · 0 评论 -
适配器模式
#include <stdlib.h> #include <malloc.h> #include <iostream> using namespace std; class Base{ public: virtual void process(){ } }; class Adaptee{ public: virtual void Request()原创 2015-05-03 11:55:42 · 872 阅读 · 0 评论 -
组合模式(Composite)
2015/4/28 组合模式(Composite): 将所有对象组织在一个树状结构之下,用来实现对象间部分—整体之间的关系,使得用户对单个对象和组合对象的使用具有一致性。#include <list> #include <iostream> #include <string> using namespace std; class Component{ protected:原创 2015-05-03 12:01:02 · 815 阅读 · 0 评论 -
代理模式(Proxy)
概念:代理本身不具有功能,为其他对象提供一种代理以控制对这个对象的访问 概括:代理模式就是在访问对象的时候引入了一些间接性,因为这些间接性,可以附加多种用途。 C++代码实现: #include <iostream> using namespace std; class Base{ public: virtual void fun()=0; }; class Derive原创 2015-05-03 11:51:49 · 951 阅读 · 0 评论 -
外观/门面模式(Facade)
2015/4/28 外观/门面模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 #include <vector> #include <iostream> using namespace std; class Base{ public: virtual void Product()=0; }; c原创 2015-05-03 11:58:52 · 978 阅读 · 0 评论 -
装饰模式(Decorator)
2015/4/28 装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。—大话设计模式#include <vector> #include <iostream> using namespace std; /*基类*/ class Component{ public: virtual void Operation()原创 2015-05-03 11:58:38 · 846 阅读 · 0 评论 -
访问者模式(Visitor)
2015/5/25 访问者模式(Visitor) 访问者模式是编者自学习设计模式以来最难的一个模式。 定义:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。#include <iostream> using namespace std; class Visitor; class library{ public: /*定义一个Ac原创 2015-05-25 02:25:10 · 1570 阅读 · 0 评论