java设计模式之工厂方法模式

由女娲造人的故事说起

盘古开天辟地后,在几个万年后一天阳光明媚,女娲娘娘闲来无事,觉的大地太寂静了,就想仿造自己的样子造一些人出来。首先,女娲采集黄土捏 成人的形状,然后放到八卦炉中烧制,最后放置到大地上生长,工艺过程是没有错的,但是意外随时都会发生:

第一次烤泥人,感觉应该熟了,往大地上一放,哇,没烤熟!于是一个白人诞生了!
(这也是缺乏经验的最好证明。)

第二次烤泥人,上一次没烤熟,这次多烤一会儿,放到世间一看,嘿,熟过头了,于是黑人诞生了!

第三次烤泥人,一边烧制一边察看,直到表皮微黄,嘿,刚刚好,于是黄色人种出现了!

这个造人过程是比较有意思的,是不是可以通过软件开发来实现这个过程呢面向对象的思维中,万物皆对象,是对象我们就可以通过软件设计来实现。

首先对造人过程进行分析,该过程涉及三个对象:

女娲(场景类Client来表示)、

八卦炉(类似于一个工厂负责制造生产人类)、

三种不同肤色的人(都是同一个接口下的不同实现类,都是人嘛,只是肤色、语言不同)。

我们来看一下类图:

下,结果如下所示。

哇,人类的生产过程就展现出来了!这个世界就热闹起来了,黑人、白人、黄人都开始活动了,这也正是我们现在的真实世界。

以上就是工厂方法模式!

工厂方法模式的扩展

我们去掉了AbstractHumanFactory抽象类,同时把createHuman方法设置为静态类型,简化了类的创建过程,变更的源码仅仅是HumanFactory和NvWa类,HumanFactory如下代码所示。

简单工厂模式中的工厂类

HumanFactory类仅有两个地方发生变化:去掉继承抽象类,并在createHuman前增加static关键字;工厂类发生变化,也同时引起了调用者NvWa的变化,

简单工厂模式中的场景类

运行结果没有发生变化,但是我们的类图变简单了,而且调用者也比较简单,该模式是工厂方法模式的弱化,因为简单,所以称为简单工厂模式(Simple Factory Pattern),也叫做 静态工厂模式。在实际项目中,采用该方法的案例还是比较多的,其缺点是工厂类的扩展比 较困难,不符合开闭原则,但它仍然是一个非常实用的设计模式。

结尾

工厂方法模式在项目中使用得非常频繁,以至于很多代码中都包含工厂方法模式。该模式几乎尽人皆知,但不是每个人都能用得好。熟能生巧,熟练掌握该模式,多思考工厂方法 如何应用,而且工厂方法模式还可以与其他模式混合使用(例如模板方法模式、单例模式、 原型模式等),变化出无穷的优秀设计,这也正是软件设计和开发的乐趣所在。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92922 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年6月4日
下一篇 2016年6月4日

相关推荐