大话设计模式8—建造者模式(建造小人)

大话设计模式8—建造者模式(建造小人)

1.需求:建造小人

假设需要使用画笔和图片画两个小人,小人只需要包含头部、身体和腿就可以。这两个小人一个是瘦人、一个是胖子。现给出画笔和图片两个类如下:

class Pen {
   
public:
	Pen();
};

class Graphics {
   
public:
	Graphics();
};

构造函数

Pen::Pen() {
   
	cout << "use yellow pen" << endl;
}

Graphics::Graphics() {
   
	cout << "start to write" << endl;
}

main函数

int main()
{
   
	Pen *p = new Pen();
	Graphics *g = new Graphics();
	//自己添加
	return 0;
}

请设计BuildThinPerson和BuildFatPerson两个类完成最终需要输出如下。
在这里插入图片描述

2.普通实现

设计两个类BuildThinPerson 和BuildFatPerson,这两个类十分相似,都有两个成员变量m_pen和m_graphics指针,来自题设给定的Pen和Graphics 两个类,BuildThinPerson的方法就是画头、身子、腿如下。

class BuildThinPerson {
   
public:
	BuildThinPerson(Pen *pen, Graphics *graphics);
	void BuildHead();
	void BuildBody();
	void BuildLeg();
	void BuildThin();
private:
	Pen *m_pen;
	Graphics *m_graphics;
};

BuildThinPerson 类的实现很简单,由于main函数已经实现了一部分,所以BuildThinPerson 类的构造函数传参即可。在BuildHead(); BuildBody();BuildLeg()三个函数中打印需要的输出,而BuildThin()函数负责调用三个函数封装起来。

BuildThinPerson::BuildThinPerson(Pen * pen, Graphics * graphics) :m_pen(pen), m_graphics(graphics) {
   
}

void BuildThinPerson::BuildHead() {
   
	cout << "build Head of thin person" << endl;
}

void BuildThinPerson::BuildBody() {
   
	cout << "build Body of thin person" << endl;
}

void BuildThinPerson::BuildLeg() {
   
	cout << "build Leg of thin person" << endl;
}

void BuildThinPerson::BuildThin()
{
   
	BuildHead();
	BuildBody();
	BuildLeg();
}

BuildFatPerson类的实现只有打印语句和BuildThinPerson不同略去实现。那么补全的main函数如下

int main()
{
   
	Pen *p = new Pen()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值