由女娲造人的故事说起
盘古开天辟地后,在几个万年后一天阳光明媚,女娲娘娘闲来无事,觉的大地太寂静了,就想仿造自己的样子造一些人出来。首先,女娲采集黄土捏 成人的形状,然后放到八卦炉中烧制,最后放置到大地上生长,工艺过程是没有错的,但是意外随时都会发生:
第一次烤泥人,感觉应该熟了,往大地上一放,哇,没烤熟!于是一个白人诞生了!
(这也是缺乏经验的最好证明。)
第二次烤泥人,上一次没烤熟,这次多烤一会儿,放到世间一看,嘿,熟过头了,于是黑人诞生了!
第三次烤泥人,一边烧制一边察看,直到表皮微黄,嘿,刚刚好,于是黄色人种出现了!
这个造人过程是比较有意思的,是不是可以通过软件开发来实现这个过程呢面向对象的思维中,万物皆对象,是对象我们就可以通过软件设计来实现。
首先对造人过程进行分析,该过程涉及三个对象:
女娲(场景类Client来表示)、
八卦炉(类似于一个工厂负责制造生产人类)、
三种不同肤色的人(都是同一个接口下的不同实现类,都是人嘛,只是肤色、语言不同)。
我们来看一下类图:
下,结果如下所示。
哇,人类的生产过程就展现出来了!这个世界就热闹起来了,黑人、白人、黄人都开始活动了,这也正是我们现在的真实世界。
以上就是工厂方法模式!
工厂方法模式的扩展
我们去掉了AbstractHumanFactory抽象类,同时把createHuman方法设置为静态类型,简化了类的创建过程,变更的源码仅仅是HumanFactory和NvWa类,HumanFactory如下代码所示。
简单工厂模式中的工厂类
HumanFactory类仅有两个地方发生变化:去掉继承抽象类,并在createHuman前增加static关键字;工厂类发生变化,也同时引起了调用者NvWa的变化,
简单工厂模式中的场景类
运行结果没有发生变化,但是我们的类图变简单了,而且调用者也比较简单,该模式是工厂方法模式的弱化,因为简单,所以称为简单工厂模式(Simple Factory Pattern),也叫做 静态工厂模式。在实际项目中,采用该方法的案例还是比较多的,其缺点是工厂类的扩展比 较困难,不符合开闭原则,但它仍然是一个非常实用的设计模式。
结尾
工厂方法模式在项目中使用得非常频繁,以至于很多代码中都包含工厂方法模式。该模式几乎尽人皆知,但不是每个人都能用得好。熟能生巧,熟练掌握该模式,多思考工厂方法 如何应用,而且工厂方法模式还可以与其他模式混合使用(例如模板方法模式、单例模式、 原型模式等),变化出无穷的优秀设计,这也正是软件设计和开发的乐趣所在。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92922 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!