建造者模式--Builder

Builder模式所面对的情况是:各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法却相对稳定。

就像女娲造人一样,不管是早男人女人,胖人瘦人都是造头部,胳膊,身体,腿。具体是怎么制造的有女娲决定,但是这几个身体部位的组合是确定的。

#include <iostream>
using namespace std;
//人的基类
class Person
{
public:
	virtual void buildHead()=0;
	virtual void buildBody()=0;
	virtual void buildArm()=0;
	virtual void buildLeg()=0;
public:
	virtual ~Person(){}
};
//胖人
class FatPerson:public Person
{
public:
	void buildHead()
	{
		cout<<"制造胖人的头部"<<endl;
	}
	void buildBody()
	{
		cout<<"制造胖人的身体"<<endl;
	}
	void buildArm()
	{
		cout<<"制造胖人的胳膊"<<endl;
	}
	void buildLeg()
	{
		cout<<"制造胖人的腿"<<endl;
	}
};
//瘦人
class ThinPerson:public Person
{
public:
	void buildHead()
	{
		cout<<"制造瘦人的头部"<<endl;
	}
	void buildBody()
	{
		cout<<"制造瘦人的身体"<<endl;
	}
	void buildArm()
	{
		cout<<"制造瘦人的胳膊"<<endl;
	}
	void buildLeg()
	{
		cout<<"制造瘦人的腿"<<endl;
	}
};
//执行组合过程
class Director
{
private:
	Person* p;
	Director(const Director&);
	Director& operator=(const Director&);
public:
	Director(Person *_p):p(_p){}
	void reset(Person* _p){p=_p;}
	void create()
	{
		p->buildHead();
		p->buildBody();
		p->buildArm();
		p->buildLeg();
	}
};
int main()
{
	ThinPerson tp;
	Director d(&tp);
	d.create();

	FatPerson fp;
	d.reset(&fp);
	d.create();
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值