![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 77
matengbo
这个作者很懒,什么都没留下…
展开
-
大话设计模式学习(一)——简单工厂模式
#pragma once#include #include using namespace std;/** 运算类*/class MyOperation{public: double NumberA; double NumberB;public: inline virtual double GetResult(){return原创 2009-11-14 18:24:00 · 505 阅读 · 0 评论 -
大话设计模式(十三)——备忘录模式
<br /> <br />备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的状态的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态<br /><br /> <br />Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态<br />Memento(备忘录):负责存储Originator对象的内部状态,并可防原创 2010-11-07 14:59:00 · 669 阅读 · 0 评论 -
大话设计模式学习(十二)——状态模式
<br />状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 <br />状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑化<br /> <br /> <br />State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为。<br />#include "Context.h" #include <iostream> using namespac原创 2010-11-01 22:20:00 · 638 阅读 · 0 评论 -
大话设计模式学习(十五)——单例模式
单例模式单例模式(singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点通常我们可以让一个全局变量使得仅有一个对象被访问,但他不能防止你实例化多个对象,一个最好的办法是,让类对象自身负责保存他的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法Singleton类,定义一个GetInstance操作,允许客户访问他的唯一实例。GetInstance是一个静态方法,主要负责创建自己的唯一实例class CSingleton { public: //获原创 2010-12-13 22:17:00 · 1273 阅读 · 0 评论 -
大话设计模式学习(十)——建造者模式
建造者模式:将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建之间的建造顺序通常是稳定的,但对象内部的建构通常面临着复杂的对象,它的好处在于使得建造代码和表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要在定义一个具体的建造者就行了Product类——产品类,由多个部件组成class Product { public: vector parts; void Add(CString原创 2010-06-25 22:13:00 · 643 阅读 · 0 评论 -
大话设计模式学习(九)——外观模式
外观模式,为子系统中的一组接口提供一个一直的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。四个子系统的类:class SubSystemOne { public: void MethodOne() { cout外观类:他需了解所有的子系统的方法或属性,进行组合,以备外界调用class Facade { public: SubSyst原创 2010-06-06 17:39:00 · 501 阅读 · 0 评论 -
大话设计模式学习(八)——模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构既可重定义该算法的某些特定步骤AbstractClass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法,这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法class AbstractClass { public: AbstractClass(void); ~AbstractClass(void);原创 2010-06-01 22:09:00 · 464 阅读 · 0 评论 -
大话设计模式学习(七)——原型模式
原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。我们来看看基本的原型模型代码。原型类:class Prototype {public: Prototype(CString id) { this->id=id; } CString id; //抽象类原创 2010-05-29 14:26:00 · 435 阅读 · 0 评论 -
大话设计模式学习(六)——工厂方法模式
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类 简单工厂模式和工厂模式对比,以运算器为例简单工厂类:客户端代码:Operation* oper=OperationFactory.createOperation();oper->NumberA=1;oper->NumberB=2;double Result=原创 2010-05-22 12:10:00 · 478 阅读 · 0 评论 -
大话设计模式学习(五)——代理模式
代理模式,为其他对象提供一种代理以控制对这个对象的访问。Subject类class Subject {public: virtual void Request()=0;}; RealSubject类class RealSubject : public Subject {public: void Request(){ cout<<_T("真实的请求")<原创 2010-05-06 22:03:00 · 458 阅读 · 0 评论 -
大话设计模式学习(四)——装饰模式
装饰模式(Decorator):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活具体代码:Component类class Component {public: virtual void Operation()=0;}; ConcreteComponent类class ConcreteComponent : public Compon原创 2010-05-04 21:40:00 · 469 阅读 · 0 评论 -
大话设计模式学习(三)——四大原则
一 单一职责原则就一个类而言,应该仅有一个引起它变化的原因。我们在做编程的时候,很自然的就会给一个类增加各种各样的功能,比如我们写一个窗体应用程序,一般都会产生一个doc这样的类,于是我们会把各种各样的代码,像某种商业运算的算法啊,数据库访问的代码啊什么的都写到这样的类中,这就意味着,无论任何需求要来,你都需要更改这个类,这是很糟糕的,维护麻烦,复用基本不可能。如果一个类承担的职责过多原创 2010-05-03 11:19:00 · 904 阅读 · 0 评论 -
大话设计模式学习(二)——策略模式
策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化, 不会影响到使用算法的客户//策略基类class Strategy {public: //定义算法接口 virtual void AlgorithmInterface();};class ConcreteStrategyA : public Strategy {p原创 2010-04-30 13:19:00 · 348 阅读 · 0 评论 -
大话设计模式学习(十四)——组合模式
<br /> 组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性<br /><br /> <br /> <br />Component为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component的子部件<br />class Component { public: Component(CString name) { strName=name; }原创 2010-11-21 16:57:00 · 1174 阅读 · 0 评论