本文的参考文章及书籍如下:
《head first设计模式》
本文主要介绍简单工厂以及工厂模式抽象工厂将放在下一次发布的文章中。
1.工厂模式概念
工厂顾名思义是用来生成产品、商品的,我们可以把工厂看成是一个创建对象的小型作坊。用他来帮助我们
创建各种实例。
2.简单工厂的实现
在以前没有水果超市,还是摆摊互相交易买卖的时候,当你在摊子面前,你想买个芒果,跟农名白白询问还有芒果么,
摊子上的刚好没有了,我去给你摘新鲜的过来,我们把农民白白当成我们要询问的客户端,把水果当成产品。
首先实现一个水果基类。如图:
接着实现具体的水果例如苹果、芒果。如图所示:
我们询问农民白白要芒果,他就去摘给我们,客户端图下:
从这个过程我们可以看到具体的创建水果的过程,去果园采摘的过程,这个芒果是怎么来的。简单工厂进化如下,
农民白白叫来了他儿子小明,让小明去采摘,农民白白坐着专门卖水果。
把小明看成一个工厂,他负责去创建采摘水果,当摊子上没有水果时,叫一声小明,待会就会有了。
改变的代码如下:
我们看到简单工厂只是对创建的过程进行了封装。
3.工厂模式的实现
农民白白的水果太好吃了,很多人慕名而来,转眼农名白白就变成了大农,因为来的人太多了,每个人的需要的水果都不一样,
种类太多,而且小明一个人去摘这些水果太累了,因此有人来替大农想了个新法子,扩大园子,对水果进行分类,招进更多的人来负责
不同水果的采摘(生成)。
这里我们抽象出一个大的工厂也就是大果园,如图所示:
我们对果园分类,比如一块地专门种植生成南方的水果,一块地专门种植北方的水果,负责这两块地的人形成了2个工厂,如图所示:
当一个买家过来说要一个苹果和一个芒果时候,我们就喊管理北方水果的人赶紧产出一个苹果和芒果补货过来。客户端代码示例如下:
工厂模式是建立在简单工厂模式下的。工厂模式属于创建型,因此创建对象在设计时候可思考用工厂模式的方式来解决。
网友评论