设计模式12-多态工厂模式

1.描述

工厂模式是简单工厂模式的优化,将简单工厂中静态创建对象方法拆分为一个对象一个工厂类。

2.优点

1)解决简单工厂中违背开放封闭原则,简单工厂中添加新对象需要修改简单工厂中case,在多态工厂中是添加新产品的工厂和新产品类,没有对已有的代码进行修改。

2)工厂不是简单工厂有静态方放不可继承,可继承,实现多态和可拓展。

3.缺点

新增产品都会增加产品工厂类,增加了系统的复杂程度。

以后使用反射会更好优化类的增加

4.结构

抽象产品:

具体产品:

抽象工厂:

具体工厂:创建具体产品实例

5.UML

客户端直接调用具体工厂类来创建产品。

 

 6.示例

#include "stdafx.h"
#include <iostream>
//1.抽象产品
class clothes
{
public:
	virtual void show() = 0;
};
//2.具体产品
class TShirts :public clothes
{
public:
	void show()
	{
		std::cout << "T恤";
	};
};
//3.抽象工厂
class closthesFactory
{
public:
	virtual clothes * CreateClosthes() = 0;
};
//4.具体工厂
class TShirtsFactory
{
public:
	clothes * CreateClosthes()
	{
		std::cout << "T恤工厂创建";
		clothes * aa = new TShirts;
		return aa;
	};
};
int main()
{
	TShirtsFactory tShirtsFactory;
	clothes *bb = tShirtsFactory.CreateClosthes();//此处不知道具体的产品是什么,封装在工厂中
	bb->show();
	getchar();
    return 0;
}

结果:T恤工厂创建T恤 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值