摘要:
原型模式用实例指定创建对象的种类,并且通过拷备原型创建新的对象。其实就是从一个已经实例化的对象创建另外一个一样的对象,同时向客户隐藏创建新对象的细节,新创建的对象是可订制的。浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。一般复制对象根据情况不同可以分为浅复制与深复制,C 阅读全文
摘要:
工厂模式定义一个用于创建对象的接口,让它的子类决定实例化哪一个产品类。工厂方法使一个类的实例化延迟到其子类。工厂方法实现时,客户端需要决定实例化哪一个具体工厂从而得到具体的产品类。如果增加新产品,则需要相应增加一个新的工厂来生产这个产品。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... 阅读全文
摘要:
简单工厂模式包含三种角色:1、工厂(Creator)角色:简单工厂模式的核心,负责实现所有实例的内部逻辑。工厂类可以被外部直接调用,创建所需的产品对象。2、抽象产品(Product)角色:所有产品对象的父类,负责描述所有实例所共有的接口。3、具体产品(Concrete Product)角色:所有创建的对象所对应的具体的类。//SimpleFactory.h#include <iostream>#include <string>using namespace std;class Operation //所有运算类的父类{protected: int numberA; in 阅读全文
摘要:
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。以下为电梯的上下运动的例子://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.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 阅读全文
摘要:
int MessageBox(HWND hwnd, LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK);第一个参数是句柄第二个参数是弹出窗体显示的内容第三个参数是弹出窗体的标题第四个参数是弹出窗体的样式,包括按钮和图标,主要选项有:按钮样式:MB_ABORTRETRYIGNORE 显示Abort、Retry、Ignore按钮MB_OK 显示OK按钮MB_OKCANCEL 显示OK、Cancel按钮MB_YESNO 显示Yes、No按钮MB_YESNOCANCEL 显示Yes、No、Cancel按钮图标样式:MB_I 阅读全文
摘要:
1、函数命名规则:大部分采用动词——名词的排列方式,若有多个单词组合,则每个单词开关字母一律大写,其余均小写,也可以采用多个单词缩写的形式对函数命名。如:SetCursor() 设置光标函数ShowWindow() 设置窗口的显示状态PtInRect() 判断点是否在矩形范围内(Pt=Point Rect=Rectangle)2、变量命名规则:以一个或者多个小写字符来表示变量的数据类型。b -> BOOLi -> intl -> longn -> shortby -> BYTE(无符号字符)c/ch -> char/WCHAR/TCHARclr -> 阅读全文
摘要:
CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );参数意义如下:bOpenFileDialog 为TRUE则显示打开对话框,为F 阅读全文