C++设计模式之建造者模式(一)(三)

2015-07-24 05:25:17 · 作者: · 浏览: 22
>BuildMenu(); m_pPlayPattern->BuildPlayList(); m_pPlayPattern->BuildControlBar(); m_pPlayPattern->BuildCollectList(); Player * pPlayer = m_pPlayPattern->GetPlayer(); return pPlayer; } 测试文件实现代码如下:
#include 
  
   
#include "ContructManage.h"
#include "PlayPattern.h"
#include "Player.h"
using namespace std;

int main()
{
        /***********************创建建造管理器**********************/
	ContructManage * pContructManage = new ContructManage();
	Player * pPlayer = NULL;

	/***********************完整播放模式************************/
	PlayPattern * pFullPattern = new FullPattern();
	cout << "完整播放模式:" << endl;
	pContructManage->SetPlayPattern(pFullPattern);
	pPlayer = pContructManage->Construct();
	pPlayer->Display();

	/***********************精简播放模式************************/
	PlayPattern * pSimplePattern = new SimplePattern();
	cout << "精简播放模式:" << endl;
	pContructManage->SetPlayPattern(pSimplePattern);
	pPlayer = pContructManage->Construct();
	pPlayer->Display();

	/***********************记忆播放模式************************/
	PlayPattern * pMemoryPattern = new MemoryPattern();
	cout << "记忆播放模式:" << endl;
	pContructManage->
SetPlayPattern(pMemoryPattern); pPlayer = pContructManage->Construct(); pPlayer->Display(); /***********************销毁操作****************************/ cout << endl; delete pFullPattern; pFullPattern = NULL; delete pSimplePattern; pSimplePattern = NULL; delete pMemoryPattern; pMemoryPattern = NULL; delete pContructManage; pContructManage = NULL; return 0; }
编译并执行,程序结果如下: n丁?编程,客户端根据需要传入具体的建造者类型,指挥者将指导具体建造者一步一步构造一个完整的产品(逐步调用具体建造者的buildX()方法),相同的构造过程可以创建完全不同的产品。在暴风影音播放器实例中,如果需要更换具体的播放模式,只需要把具体播放模式传入到播放器指挥者中即可,可以随时切换播放模式;如果需要增加新的播放模式,可以增加一个新的播放模式类作为抽象播放模式子类,并把该播放模式传入到播放器指挥者中,原有代码无须修改,完全符合“开闭原则”。
未完、更新中......