设为首页 加入收藏

TOP

C++设计模式之建造者模式(一)(二)
2015-07-24 05:25:17 来源: 作者: 【 】 浏览:18
Tags:设计模式 建造 模式
考虑到扩展性,可以定义一个抽象播放模式类,该抽象类中定义了一系列创建具体播放部件的方法。具体的三种播放模式继承于这个抽象播放模式类。 播放模式.h头文件代码如下:
#ifndef _PLAY_PATTERN_H_
#define _PLAY_PATTERN_H_
#include 
  
   
#include 
   
     #include "Player.h" using namespace std; //抽象播放模式 class PlayPattern { protected: //具体产品(播放器) Player * m_pPlayer; public: PlayPattern() { m_pPlayer = new Player(); } ~PlayPattern() { if( NULL != m_pPlayer ) { delete m_pPlayer; m_pPlayer = NULL; } } //制造播放窗口 virtual void BuildWindow() = 0; //制造播放菜单 virtual void BuildMenu() = 0; //制造播放列表 virtual void BuildPlayList() = 0; //制造播放进度条 virtual void BuildControlBar() = 0; //制造收藏列表 virtual void BuildCollectList() = 0; //获取产品(播放器) Player * GetPlayer() { return m_pPlayer; } }; //完整播放模式 class FullPattern : public PlayPattern { public: void BuildWindow(); void BuildMenu(); void BuildPlayList(); void BuildControlBar(); void BuildCollectList(); }; //精简播放模式 class SimplePattern : public PlayPattern { public: void BuildWindow(); void BuildMenu(); void BuildPlayList(); void BuildControlBar(); void BuildCollectList(); }; //记忆播放模式 class MemoryPattern : public PlayPattern { public: void BuildWindow(); void BuildMenu(); void BuildPlayList(); void BuildControlBar(); void BuildCollectList(); }; #endif
   
  
播放模式Cpp文件代码如下:
#include "PlayPattern.h"

//制造播放窗口
void FullPattern::BuildWindow()
{
	m_pPlayer->SetWindow("主界面窗口");
}

//制造播放菜单
void FullPattern::BuildMenu()
{
	m_pPlayer->SetMenu("主菜单");
}

//制造播放列表
void FullPattern::BuildPlayList()
{
	m_pPlayer->SetPlayList("播放列表");
}

//制造播放进度条
void FullPattern::BuildControlBar()
{
	m_pPlayer->SetControlBar("进度条");
}

//制造收藏列表
void FullPattern::BuildCollectList()
{
	m_pPlayer->SetCollectList(" ");
}

////////////////精简模式///////////////////////////////

void SimplePattern::BuildWindow()
{
	m_pPlayer->SetWindow("主界面窗口");
}

void SimplePattern::BuildMenu()
{
	m_pPlayer->SetMenu(" ");
}

void SimplePattern::BuildPlayList()
{
	m_pPlayer->SetPlayList(" ");
}

void SimplePattern::BuildControlBar()
{
	m_pPlayer->SetControlBar("进度条");
}

void SimplePattern::BuildCollectList()
{
	m_pPlayer->SetCollectList(" ");
}

/////////////////记忆模式////////////////////////////////

void MemoryPattern::BuildWindow()
{
	m_pPlayer->SetWindow("主界面窗口");
}

void MemoryPattern::BuildMenu()
{
	m_pPlayer->SetMenu(" ");
}

void MemoryPattern::BuildPlayList()
{
	m_pPlayer->SetPlayList(" ");
}

void MemoryPattern::BuildControlBar()
{
	m_pPlayer->SetControlBar("进度条");
}

void MemoryPattern::BuildCollectList()
{
	m_pPlayer->SetCollectList("收藏列表");
}
在建造者模式的结构中还引入了一个指挥者类Director,用于控制产品的创建过程。本例中ContructManage就是播放器指挥类。用户需要哪种类型的播放模式,只需要创建一个具体的播放模式,然后把这个播放模式传入到播放器指挥者中就可以了,由播放器指挥者处理一系列过程的建造。
暴风影音播放器指挥者类.h头文件实现如下:
#ifndef _CONTRUCT_MANAGE_H_
#define _CONTRUCT_MANAGE_H_
#include "PlayPattern.h"
#include "Player.h"

//建造管理器
class ContructManage
{
private:
	//具体建造者
	PlayPattern * m_pPlayPattern;
public:
	//设置播放模式
	void SetPlayPattern(PlayPattern * pPlayPattern);

	//封装建造过程
	Player * Construct();
};

#endif
暴风影音播放器指挥者类Cpp文件实现如下:
#include "ContructManage.h"

//设置播放模式
void ContructManage::SetPlayPattern(PlayPattern * pPlayPattern)
{
	m_pPlayPattern = pPlayPattern;
}

//封装建造过程
Player * ContructManage::Construct()
{
	m_pPlayPattern->BuildWindow();
	m_pPlayPattern-
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces Round #252 D 置换群.. 下一篇HDOJ 4974 A simple water problem

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: