您的位置: 鄂尔多斯信息网 > 财经 > 正文

设计模式(五)工厂模式(Factory)!

2021-01-31 07:48:53来源:阅读:-

定义

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

UML图

设计模式(五)工厂模式(Factory)

个人理解:比如一个A类中定义了若干方法,而在另一个B类中需要调用A类其中的一个方法,当然,我们可以直接 new,但是,这样做的结果就是将A类的所有方法都引用了进来,此时,不仅违背了java面对对象的编程思想,还与A类的复杂构造逻辑耦合。但是如果我们此时向A类中传递一个参数或多个参数,只引用我们所需要的的方法,此时需要创建一个接口。这种模式便称之为工厂模式。它能够有效的避免方法的暴露。当然,根据业务逻辑而定。

分类

代码以生产手机和 PAD 为例:

手机车间

设计模式(五)工厂模式(Factory)

生产手机的机器

设计模式(五)工厂模式(Factory)

1、简单工厂:

简单工厂模式其实不是一个设计模式,反而比较像一种编程习惯。主要我们定义一个非常简单的类主要负责帮我们生产不同的产品

设计模式(五)工厂模式(Factory)

测试

设计模式(五)工厂模式(Factory)

结果

苹果手机开始生产...1

2、简单工厂(反射实现):

利用反射Class.forName(clz.getName()).newInstance()实现的简单工厂

设计模式(五)工厂模式(Factory)

测试

设计模式(五)工厂模式(Factory)

结果

华为手机开始生产...1

3、方法工厂

通过定义不同的方法,然后随机调用实现,例如 Controller 层调用 Servers 层中的方法。

设计模式(五)工厂模式(Factory)

测试

设计模式(五)工厂模式(Factory)

结果

三星手机开始生产...1

4、普通工厂

把简单工厂中具体的工厂类,划分成两层:抽象工厂层+具体的工厂子类层

设计模式(五)工厂模式(Factory)

测试

设计模式(五)工厂模式(Factory)

结果

三星手机开始生产...1

5、抽象工厂

用于多个产品一起生产。为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类

设计模式(五)工厂模式(Factory)

设计模式(五)工厂模式(Factory)

测试

设计模式(五)工厂模式(Factory)

结果

设计模式(五)工厂模式(Factory)

比较

内容简单工厂简单工厂(反射)方法工厂普通工厂抽象工厂
特点一个具体的类,通过createPhones方法利用if或者 switch创建产品并返回,静态一个具体的类,通过createPhones方法利用反射机制生成对象返回不同产品,提供不同的生产方法把简单工厂中具体的工厂类,划分成抽象工厂层和具体的工厂子类层多产品系
优点简单,易理解较简单工厂,代码简单容错率高,方便松耦合,面向对象(具体方法)面向对象,多产品实现共同生产
缺点扩展性差,紧耦合使用发射,效率低下代码较复杂每次新增一个具体产品类,也要同时新增一个具体工厂类容易造成紧耦合

THE END

推荐阅读:福建都市网

滚动推荐
48:53设计模式(五)工厂模式(Facto
而在另一个B类中需要调用A类其中的一个方法,当然,我们可以直接new,[详细]
47:54良心干货!估值体系深度梳理!
公司内在价值的确定并不是件容易的事,难在两点,第一,公司的价值虽然短期[详细]
19:26小米滑盖全面屏手机来了,京东已开启
近日,在京东商城小米的一款新机,小米MIX3已开启预约发售。据前期小米[详细]
03:08电信用户有福啦,这样设置让你的手机
国内手机网络发展到现在,从开始的移动信号最好,到联通的CDMA最环保,[详细]
46:42图说麦芒4,电信用户的福利,华为的
“一入电信深似海,从此手机不好卖”,很多朋友应该都听到过身边电信手机用[详细]
46:23给大家介绍一只能“双卡双待”的基金
我们可以选择通话资费较低的电话卡打电话,选择流量多的电话卡上网,避免受[详细]
08:3630日科技精选:华为启用鸿蒙操作系
鸿蒙是完全不同的一个操作系统,可能会应用到华为新的手机上面。而是华为和[详细]