我说设计模式 - 工厂模式(Factory)

一直以来,设计模式都被人说得玄乎,以至于普通的软件开发人员不敢去触碰。今天开始,本博将试着去揭开这层面纱,从几个常用的基本模式入手来说说设计模式的那些事。

设计模式其实是一种成熟的经验设计思想。资深的设计人员试着把复杂的软件解决方案经验用几种代表型的框架去固定下来,以推动软件的工程化进度,有效提高软件的可靠性和可维护性,同时也有助于降低软件开发过程中的各种架构风险,优化用户接口,提升用户体验。

先来看看工厂模式(Factory)。
工厂模式简单分成三类:简单工厂,工厂方法,抽象工厂。

看官,那如何分辨和应用这三种不同场合呢?先卖个关子,插播一段故事。

小王刚刚辞掉工作,打算投资一个外币兑换点。于是,说干就干,开了一个窗口,提供美元,韩元和人民币的兑换,并挂出了广告牌。生意渐渐好起来,小王就开始增加兑换币种,修改广告牌。 随着客户的增加,明显的小王开始忙不过来了。

为了优化服务质量,提高响应速度,小王决定招人扩张窗口,同时为了避免出错,小王对窗口进行了分类,对不同币种提供不同的兑换窗口。这样一来,增加币种也只需要增加一个窗口,对其他窗口的业务不受影响。

小日子越来越红火,兑换的人也越来越多,也招来了大客户们的光临。当然问题也随之而来。大客户开始不满意和普通客户的一样的等待时间和响应速度,开始频繁投诉。小王急得不可开交,开始再次调整服务框架。于是小王再次扩张了一个厅专门服务于大客户,也开设了专门针对各种大客户交易的各个币种的兑换窗口。于是,随着服务质量的提升,小王的业务正式步入了轨道,越来越被大众所接受。

同样的兑换操作,实现了从单一窗口,到多元化窗口再到多样化多元化服务窗口的过度,从而改善了服务质量的同时,有效控制了差错。到这里,大家也许已经猜到了,这似乎是一种设计模式思想吧?是的,这个就是我们本次要探索的工厂模式。

在小作坊阶段,小王的兑换中心就是一个简单工厂模式。客户通过小王的窗口兑换各种货币,而小王则实现对各种货币的兑换操作。

初具规模后,小作坊的模式明显有碍业务发展,而且如果同一窗口经常在各种货币汇率之间切换,容易出错。增加新币种,也直接影响到原来业务的服务质量。于是,小王的初次服务框架调整和扩张后的兑换中心运作就是一个工厂方法模式。客户通过不同的窗口兑换不同的币种,同时新的币种只需要新开窗口和招专职汇兑人员,不影响老的窗口业务。对客户来说,虽然不能在一个窗口实现所有汇兑,但一对一的汇兑更加快捷和准确,也比较满意。

成熟运作的小王汇兑中心更像一个抽象工厂模式。对不同的客户提供差异化服务,客户面对的是大客户经理和普通客户经理的引导,而服务中心内部主要是规模级别的提升,对原有的业务不会有大的影响。

小结:
在面向对象的编程中,工厂模式是一种经常被使用到的模式。总的来说,在工厂模式里,如果有一个公共的抽象父类,该父类派生出一组子类。那么在创建不同的子类时,把任务交给一个工厂类,由它选择生成哪个子类实例,即用户只需要传递必要的参数给工厂类就可以了,而不去关心具体的子类是怎样产生的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值