简单工厂模式

工厂可以由不同的需求生产不同的产品,例如矿场 ,可以加个铁矿,铜矿,金矿等等,文化用品制造厂可以制造铅笔,钢笔,中性笔等等。

选择场景:我们在画图板画图或者写字的时候选择不同的画笔类型可以画出不同效果的图像,假如现在要求我们实现一个画笔工厂,可以写不同的类型的字。

UML类图如下

代码如下

class Pen
{
public:
	Pen(){}
	virtual ~Pen(){}
	virtual void drawText(std::string str) = 0;
};

class DotPen :public Pen
{
public:
	DotPen(){}
	virtual ~DotPen(){}
	virtual void drawText(std::string str)
	{
		cout << "DotPen::" << str << endl;
	}
};

class SolidPen :public Pen
{
public:
	SolidPen(){}
	virtual ~SolidPen(){}
	virtual void drawText(std::string str)
	{
		cout << "SolidPen::" << str << endl;
	}
};

class SawtoothPen :public Pen
{
public:
	SawtoothPen(){}
	virtual ~SawtoothPen(){}
	virtual void drawText(std::string str)
	{
		cout << "SawtoothPen::" << str << endl;
	}
};

class PenFactory
{
public:
	enum PenType
	{
		Solid,
		Dot,
		Sawtooth
	};
	static Pen* CreatePen(PenType type)
	{
		switch (type)
		{
		case PenFactory::Solid:
			return new SolidPen;
		case PenFactory::Dot:
			return new DotPen;
		case PenFactory::Sawtooth:
			return new SawtoothPen;
		}
		return nullptr;
	}
	static void DestoryPen(Pen* pen)
	{
		if(pen)
		{
			delete pen;
			pen = nullptr;
		}
	}
};

测试

int main()
{
	
	Pen* pdot=PenFactory::CreatePen(PenFactory::Dot);
	pdot->drawText("hello");
	PenFactory::DestoryPen(pdot);
	Pen* psolid = PenFactory::CreatePen(PenFactory::Solid);
	psolid->drawText("hello");
	PenFactory::DestoryPen(psolid);

	getchar();
	return 0;
}

 

转载于:https://my.oschina.net/pirtt/blog/897047

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值