>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;
}
编译并执行,程序结果如下:
编程,客户端根据需要传入具体的建造者类型,指挥者将指导具体建造者一步一步构造一个完整的产品(逐步调用具体建造者的buildX()方法),相同的构造过程可以创建完全不同的产品。在暴风影音播放器实例中,如果需要更换具体的播放模式,只需要把具体播放模式传入到播放器指挥者中即可,可以随时切换播放模式;如果需要增加新的播放模式,可以增加一个新的播放模式类作为抽象播放模式子类,并把该播放模式传入到播放器指挥者中,原有代码无须修改,完全符合“开闭原则”。
未完、更新中......