随笔分类 - Design Patterns
原型模式(prototype)
摘要:原型模式用实例指定创建对象的种类,并且通过拷备原型创建新的对象。其实就是从一个已经实例化的对象创建另外一个一样的对象,同时向客户隐藏创建新对象的细节,新创建的对象是可订制的。浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。一般复制对象根据情况不同可以分为浅复制与深复制,C
阅读全文
工厂模式(Factory)
摘要:工厂模式定义一个用于创建对象的接口,让它的子类决定实例化哪一个产品类。工厂方法使一个类的实例化延迟到其子类。工厂方法实现时,客户端需要决定实例化哪一个具体工厂从而得到具体的产品类。如果增加新产品,则需要相应增加一个新的工厂来生产这个产品。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...
阅读全文
简单工厂模式(Simple Factory)
摘要:简单工厂模式包含三种角色:1、工厂(Creator)角色:简单工厂模式的核心,负责实现所有实例的内部逻辑。工厂类可以被外部直接调用,创建所需的产品对象。2、抽象产品(Product)角色:所有产品对象的父类,负责描述所有实例所共有的接口。3、具体产品(Concrete Product)角色:所有创建的对象所对应的具体的类。//SimpleFactory.h#include <iostream>#include <string>using namespace std;class Operation //所有运算类的父类{protected: int numberA; in
阅读全文
状态模式(State)
摘要:状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。以下为电梯的上下运动的例子://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)..
阅读全文
单例模式(Singleton)
摘要:单例模式保证一个类只有一个实例,并提供一个访问它的全局访问点。类负责保存它自身的唯一实例,这个类可以保证没有其他实例被创建,并且可以提供一个访问该实例的方法。类的实例化需要构造函数,构造函数可以被调用,是因为一般的构造函数是公有的。通过显式地把构造函数设置为私有的或保护的,可以使类外部无法实例化。Singleton.h 1 //Singleton.h 2 3 #ifndef _SINGLETON_H_ 4 #define _SINGLETON_H_ 5 6 class Singleton //单例类 7 { 8 public: 9 static Singleton* ...
阅读全文
命令模式(Command)
摘要:命令模式将一个请求封装为一个对象,从而使命令发出者可以用不同的请求对客户进行参数化;对请求排除或记录请求日志,以及支持可撤销的操作。#include <iostream>#include <string>using namespace std;//命令接收者类class Receiver{public: void ActionA(string commandName) { cout << "Executing A, it's name is " << commandName << endl; } void
阅读全文
浙公网安备 33010602011771号