工厂模式的简介;容易理解,也不难,重在体会。不要太在意本篇博客中举的场景案例,重在这种构架方式和思维方式。即换种话说工厂模式这种构架方式和思维方式可以解决很多实际的业务场景问题,但在实际中,工厂模式究竟常用于解决哪种场景问题,(或者说工厂模式解决哪类业务场景更给力)就需要慢慢积累了。
目录
然后,第二部分,就是实际调用了:编写入口类:Software类来使用上面的模块
1.什么是设计模式:

受此启发:



工厂模式:是创建型模式中最简单也是最重要的一种模式。
2.工厂模式简介

比如,当有很多(几十上百个)类,每个类实现的工作基本相同(但还是有差异的),在对这些类进行选择的时候是非常困难的。如果此时有一个类来帮助我们选择所需要的类,那么对于使用者来说可以简化大量的时间。所谓工厂模式就是通过一个类似于中间人的角色,帮助我们选择指定的类,并且来创建这个类的对象。对于工厂模式,所谓的那个中间人就是工厂类。工厂模式的核心就是开发这个工厂类。通过工厂类作为中间人的角色,来帮助我们创建对象。即,我们要想得到某个类的对象,不是自己手动new出来,而是通过工厂类来进行创建。
简单工厂、工厂方法、抽象工厂:这三者的使用办法和目的(隐藏创建类的细节)是一样的。但是设计理念存在差异,其中,简单工厂:使用最简单,也是使用最广的一种工厂模式。
(1)简单工厂介绍
现实中的一个例子:全中国有各式各样的苹果,比如你想吃某种口味的苹果,如何找到自己喜欢的品种呐?如果没有其他人帮助,自己去选择的话,你可能要尝遍中国的苹果, 才能找到最符合自己口味的苹果。想得到心满意足的苹果需要花费大量的精力。水果商人看到了这一点,他们把全中国各种各样的苹果集中在一起,放在水果超市里,水果商人对每一种苹果的口感、特性都了如指掌;如果我们再想吃某种口味的苹果的话,就直接找这个水果商,提出自己的需求,水果商就能给我们提供。


(2)简单工厂案例
比如项目中一个典型的应用:国际化:i18n。(internationalization首字母i和尾字母n之间有18个字母,所以国际化又叫i18n;)
创建一项目演示工厂模式怎么用:不要在意细节,看下整体组织架构
首先,第一部分,i18n模块
该模块包括以下几部分:
(1)一个接口:I18N接口

(2)接口有三个实现类:Chinese类,Italian类,Spainish类;这三个类实现I18N接口

(3)创建工厂类:I18NFactory类

其实可以发现,上面三部分都在【com.imooc.factory.i18n】包中,这部分在实际中可以看成是一个模块,这个模块不用关心其他模块的开发,其他模块的开发也不用关心这个模块的细节;对于这个模块来说,其他模块只要能通过工厂类获取到所需要的对象就可以了。
然后,第二部分,就是实际调用了:编写入口类:Software类来使用上面的模块

案例说明:(1)最原始的三个实现类都要实现相同的接口;
(2)在使用时候,全部是面向接口进行的开发,由工厂类来决定这个接口具体的实现类是哪个,并且创建实现类的对象;
(3)上面工厂类中的方法是static的,对于这种工厂类也被称作静态工厂;这样在实际使用工厂类的时候,并不需要new实例化工厂类,而是直接调用静态方法就可以了;(这种静态工厂可以简化程序的开发,以及创建对象所产生的消耗);大部分情况下,工厂类中的这个返回对象的方法都是使用static描述的。
Summary:
● 工厂模式通过额外引入工厂类,隐藏了创建类的细节,使用者不用关心底层的创建逻辑,只需要知道工厂类以及工厂类创建对象的方法,并且返回的是对应的接口就可以了。
● 通过工厂模式:可以让每一个团队之间(或者每一个人之间)分工合作更加的明确;比如,上面例子中,对于【com.imooc.factory.i18n】包中的具体实现,其他的人是无需关心的,只要能通过工厂类获取到所需要的对象就可以了;即工厂模式:让分工更明确;模块与模块之间的耦合也更低。
本文介绍了工厂模式的概念及其在软件开发中的应用。通过一个简单的国际化(i18n)案例,展示了如何利用工厂模式简化对象创建过程,降低模块间的耦合度。
3641

被折叠的 条评论
为什么被折叠?



