大话设计模式14-建造者模式-2021-1-12

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、建造者模式是什么?

当需要创建一个复杂的对象,并且对象的建造顺序稳定时,为了使得建造代码和表示代码相分离,隐藏对象建造过程,可以使用建造者模式。类图示意如下:
在这里插入图片描述
其中builder类定义了对象建造使用的抽象接口,concretebuilder类定义了不同对象的具体接口,director类调用具体对象接口,按照一系列顺序建造对象。

二、具体代码

代码如下(示例):

//14 建造者模式
class PersonBuilder
{
public:
	virtual void createHead() = 0;
	virtual void createBody() = 0;
	virtual void createLeftArm() = 0;
	virtual void createRightArm() = 0;
	virtual void createLeftLeg() = 0;
	virtual void createRightLeg() = 0;
};

class ThinPersionBuilder :public PersonBuilder
{
public:
	void createHead() override
	{
		cout << "瓜子脸" << endl;
	}
	void createBody() override
	{
		cout << "竹竿腰" << endl;
	}
	void createLeftArm() override
	{
		cout << "迷人左臂" << endl;
	}
	void createRightArm() override
	{
		cout << "迷人右臂" << endl;
	}
	void createLeftLeg() override
	{
		cout << "180左腿" << endl;
	}
	void createRightLeg() override
	{
		cout << "180右腿" << endl;
	}
};

class FatPersionBuilder :public PersonBuilder
{
public:
	void createHead() override
	{
		cout << "圆圆脸" << endl;
	}
	void createBody() override
	{
		cout << "水桶腰" << endl;
	}
	void createLeftArm() override
	{
		cout << "健壮左臂" << endl;
	}
	void createRightArm() override
	{
		cout << "健壮右臂" << endl;
	}
	void createLeftLeg() override
	{
		cout << "粗壮左腿" << endl;
	}
	void createRightLeg() override
	{
		cout << "粗壮右腿" << endl;
	}
};

class PersionDirector
{
public:
	PersionDirector(PersonBuilder *ipBuilder) :m_pPersonBuilder(ipBuilder){};
	void CreatePersion()
	{
		m_pPersonBuilder->createHead();
		m_pPersonBuilder->createBody();
		m_pPersonBuilder->createLeftArm();
		m_pPersonBuilder->createRightArm();
		m_pPersonBuilder->createLeftLeg();
		m_pPersonBuilder->createRightLeg();
	}
private:
	PersonBuilder *m_pPersonBuilder;
};

总结

暂无。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值