摘要:
工厂模式定义一个用于创建对象的接口,让它的子类决定实例化哪一个产品类。工厂方法使一个类的实例化延迟到其子类。工厂方法实现时,客户端需要决定实例化哪一个具体工厂从而得到具体的产品类。如果增加新产品,则需要相应增加一个新的工厂来生产这个产品。Product.h 1 //Product.h 2 3 #ifndef _PRODUCT_H_ 4 #define _PRODUCT_H_ 5 6 class Product //产品基类 7 { 8 public: 9 virtual ~Product() = 0;10 11 protected:12 Product();13 14... 阅读全文
摘要:
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。以下为电梯的上下运动的例子://State.hclass Elevator;//状态基类class State {public: State() {} virtual void Move(Elevator *elevator); //电梯运动};//电梯类class Elevator{private: State *state;public: Elevator(State *state); void SetState(State *state).. 阅读全文
摘要:
简单工厂模式包含三种角色:1、工厂(Creator)角色:简单工厂模式的核心,负责实现所有实例的内部逻辑。工厂类可以被外部直接调用,创建所需的产品对象。2、抽象产品(Product)角色:所有产品对象的父类,负责描述所有实例所共有的接口。3、具体产品(Concrete Product)角色:所有创建的对象所对应的具体的类。//SimpleFactory.h#include <iostream>#include <string>using namespace std;class Operation //所有运算类的父类{protected: int numberA; in 阅读全文
摘要:
单例模式保证一个类只有一个实例,并提供一个访问它的全局访问点。类负责保存它自身的唯一实例,这个类可以保证没有其他实例被创建,并且可以提供一个访问该实例的方法。类的实例化需要构造函数,构造函数可以被调用,是因为一般的构造函数是公有的。通过显式地把构造函数设置为私有的或保护的,可以使类外部无法实例化。Singleton.h 1 //Singleton.h 2 3 #ifndef _SINGLETON_H_ 4 #define _SINGLETON_H_ 5 6 class Singleton //单例类 7 { 8 public: 9 static Singleton* ... 阅读全文
摘要:
命令模式将一个请求封装为一个对象,从而使命令发出者可以用不同的请求对客户进行参数化;对请求排除或记录请求日志,以及支持可撤销的操作。#include <iostream>#include <string>using namespace std;//命令接收者类class Receiver{public: void ActionA(string commandName) { cout << "Executing A, it's name is " << commandName << endl; } void 阅读全文