前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大话设计模式14-建造者模式-2021-1-12

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

作者头像
用户7719114
发布2022-02-22 13:28:48
1760
发布2022-02-22 13:28:48
举报
文章被收录于专栏:C++小白

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

文章目录

一、建造者模式是什么?

当需要创建一个复杂的对象,并且对象的建造顺序稳定时,为了使得建造代码和表示代码相分离,隐藏对象建造过程,可以使用建造者模式。类图示意如下:

在这里插入图片描述
在这里插入图片描述

其中builder类定义了对象建造使用的抽象接口,concretebuilder类定义了不同对象的具体接口,director类调用具体对象接口,按照一系列顺序建造对象。

二、具体代码

代码如下(示例):

代码语言:javascript
复制
//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;
};

总结

暂无。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、建造者模式是什么?
  • 二、具体代码
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档