首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

形式精粹——工厂模式

2012-10-27 
模式精粹——工厂模式记得很久以前关于模式的资料自己也接触过不少,不过那个时候很少用到,只是概念上有这么

模式精粹——工厂模式
       记得很久以前关于模式的资料自己也接触过不少,不过那个时候很少用到,只是概念上有这么个东西,与大部分人一样开发只是随心所欲,毫无章法。直到这几年,大大小小的项目也做了不少,偶然回味起来,颇有几分感触。
       下面有几点总结经验希望和大家分享,如有不对,望予指正。 本文旨意并不是要将模式的所有内容呈现给大家,目前关于模式的资料各处皆有,如果想了解,可以通过上网,买书的方式得到,笔者结合这几年的实际经验,将里面的精华提炼出来,以作阐述。
       首先是工厂模式,按照定义来看就是“为创建对象提供过渡接口,隐藏具体创建过程”,不错,工厂模式的主旨就是提供一个统一的接口,来管理同一类系对象的创建。
       笔者总结了一下,其优点主要如下:
       1.设计与实现分离。目前我们做开发不可能再是一个人孤军奋斗,而是需要好几个人共同来完成一个项目,所以设计对于我们来说变得尤为的重要,拥有一个良好的设计接口可以使我们的具体实现风格统一,不会你做你的,我做我的,使得开发变得无章可循,导致日后的艰难维护。
       2.利用工厂(统一接口)管理同一设计的实现。我们遵循设计来完成我们的实现,因此这些实现被设计所隐藏,我们唯一要做的就是利用一个管理器——工厂来管理我们的具体实现。
       3.便于实现的扩展。实现是基于设计而来的,所以日后将会还有其他的实现,这是我们难以预料的,要扩展我们的设计,所要做的就是遵循设计,就这么简单。 似乎到这里还是很抽象,没有解决实质的问题。 下面笔者奉上一张工厂模式的理解图,帮助大家来更好的理解其价值所在:



       做开发的时候我们分为两个团体,一方是客户程序员,另一方是程序库的开发者,程序库的开发者负责产品类的开发,以供客户程序员的调用。
       库开发者首先设计自己的产品类,所以就提供了一个设计接口,接着就是在产品设计的指引之下开发实际的产品类,产品类被其产品设计很好的隐藏。库开发者日后无论怎么扩展和变动产品类都需要按照产品设计的标准来执行。
       客户程序员则是拿着由库开发者所提供的产品设计来完成应用,当然,我们是消费产品的一方,而不是创建产品的一方,所以我们不需要关心底层的实现。这些都留给库开发者去完成。但光有设计这还不够,没有办法去做一些实事啊,我们怎么来利用某种具体产品来填充我们的设计呢?所以就产生了工厂类这么个玩意儿,用它来管理所有的具体产品。客户程序员唯一要做的就是指名需要那种具体产品就好了。
       我们在做开发的时候使用模式会让我们的产品更加的便于扩展,更加的专业,不过也不能无谓的陷入到模式当中,不然反而会适得其反,增加程序不必要的开销,这样有模式不如无模式,笔者总结了两点需要用到工厂模式的地方:
       1.客户程序不需要知道所使用对象的创建过程。记住,我们只是消费产品而不是创造产品。
       2.客户程序使用对象存在变动或者不知道该使用哪个具体对象。这是工厂模式的核心:应对需求变动。库开发者可能随时将产品变动,添加产品,或者压根儿就没有提供产品,这个时候客户程序员只要拿到设计,依旧可以完成自己的应用。提高了开发效率。

还是用代码说话吧!

热点排行