设计模式-抽象工厂总结

*要学习某个设计模式,首先要了解该设计模式是为了解决一个什么样的问题, 
在现实中应用场景是什么,才能达到事半功倍的效果。 --Sepmay*

添加链接描述上一篇文章中,介绍了工厂方法,对工厂方法的理念,解决的问题,以及现实中的应用都作了讲解。 之前提到的工厂方法是为了解决这样的问题,在软件系统中,经常面临着创建对象的工作,由于需求的不断变化,需要创建的对象的具体类型也会经常产生变化
那么抽象工厂是为了解决什么问题?它与工厂方法有什么联系和区别是什么呢?

问题:在软件系统中,经常面临着需要创建“一系列相互依赖的对象”,同时,由于需求的变化,可能需要创建另一组相互依赖的对象,所以往往存在多系列对象的创建工作。

接下来进入一个案例:
假设一个工厂需要生产三种产品A,B,C,每个产品都要经过三个流程,分别为design(设计),process(加工),assemble(组装),并且每个产品的三个流程都不相同。

根据题意我们得创建三个流程对象,分别为design对象,process对象,assemble对象,每个对象中实现相应的方法,并且根据不同的产品,需要创建相应的流程对象,A得创建属于A的design,process和assemble对象,以此类推所以说三个流程之间是相互依赖的,不能A的design之后进行属于B的process流程,这样与实际情况不符合,明显是错误的。按照工厂模式的方法,大家可以尝试下,写是可以完成的,但是代码重复性也较高,较为繁琐。

抽象工厂的方法,是将有一系列依赖关系的对象抽象成一个类,通过一个类进行管理,避免了错误并且简单利落。接下来看代码:

 class Design{
   
public:
    virtual void Designing() = 0;
	virtual ~Design() {
   }
};

class Process {
   
public:
	virtual void Processing() = 0;
	virtual ~Process() {
   }
};
class Assemble {
   
public:
    virtual void Assembling() = 0;
	virtual ~Assemble() {
   }
};

class AbstractFactory{
   
public:
	virtual Design* Creatdesign () = 0;
	virtual Process* Creatprocess () =0;
	virtual Assemble* Creatassemble 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值