抽象工厂模式

来源:互联网 发布:人工智能学院 编辑:程序博客网 时间:2024/04/30 04:03

     最近了解了一下抽象工厂设计模式,本来是想转载一篇好的例子并且用C++实现的文章,也找到了一篇不错的文章,无奈,突然不想转载了。

     看了几个例子,汽车工厂那个举得的确不怎么样,弄得我一头雾水,倒是用C++实现的那篇文章举得是川菜和鲁菜不同菜系鱼和红烧肉的例子简单明了,其实当我真正了解了抽象工厂模式到底是一个什么模式的时候,脑子里的例子变得数不胜数。

    废话不多说,列一下这篇文章想要说的几点:

    1.设计模式的理解

    2.抽象工厂模式举例和理解

    3.抽象工厂模式的C++实现

 

1.设计模式的理解

    之前转载过一篇文章,好像经典的设计模式被默认成23个,分创建性设计模式5个,结构性设计模式7个和行为型设计模式11个。虽然有些盲点不太清楚,但是既然设计模式是对应解决问题产生的,他们三类必然解决三类不同的问题。

2.抽象工厂模式举例和理解

  举个例子吧,虽然本人喜欢微软胜于苹果,不过这个例子拿苹果的东西举例更好理解

  举例iphone5和iphone5s吧,众所周知,iphone手机随着升级换代硬件配置会越来越高。前者A6CPU IOS6系统后者A7CPU IOS6系统。

  要说明两个概念,产品族和产品等级结构,先上图

比较懒,网上copy了个图片,这两个概念还是比较好理解,一个等级结构好比同一样东西不同型号,比如A6和A7两款CPU的对比,而产品族是一个完整的产品。


抽象工厂模式中有四个角色:

抽象工厂角色,具体工厂角色,抽象产品角色,具体产品角色。

先在此上copy图片然后用iphone的例子理解一下。

不考虑细节问题,苹果的整个工厂好比抽象工厂角色即abstract factory,其中生产CPU和OS的两个工厂分别为具体工厂concrete factory1生产CPU,两个产品为ProductA1 好比A6处理器,ProductA2好比A7处理器,下同IOS。可知abstract productA即IPHONE5,abstract productB为IPHONE5S。此时,应用程序已经左手iPhone5右手iPhone5s了。

3.抽象工厂模式的C++实现


。。。过几天写



0 0
原创粉丝点击