博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅析JAVA设计模式之工厂模式(二)
阅读量:5250 次
发布时间:2019-06-14

本文共 1708 字,大约阅读时间需要 5 分钟。

1 工厂方法模式简单介绍

        工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类。而是一个抽象工厂,提供详细工厂实现的接口,详细创建产品交由子工厂去做,抽象工厂不涉及不论什么产品被实例化的细节。

而不同等级的产品。就相应一个不同等级的工厂,例如以下图。

1

1.1工厂方法模式(多态性工厂模式):

      工厂方法模式有四个角色: 1. 抽象产品接口 2. 详细产品类 3. 抽象工厂接口 4.详细工厂类

1.2工厂方法的实现(建一个factroyMethod包,全部程序都放在该包下):

(1)首先建一个抽象产品接口(Computer.java)。

package factroyMethod;public interface Computer {	public void run();}

(2)建两个详细产品类(Dell.javaLenovo.java)。须要实现Computer接口。

package factroyMethod;public class Dell implements Computer {	public void run() {		System.out.println("戴尔电脑执行了");	}}package factroyMethod;public class Lenovo implements Computer {	public void run() {		System.out.println("联想电脑执行了");	}}

(3)建一个抽象工厂接口(ComputerFactory.java)。

package factroyMethod;public interface ComputerFactory {	public Computer makeComputer();}

(4)建两个个详细工厂类(DellComputerFactory.java、LenovoComputerFactory.java)。

package factroyMethod;public class DellComputerFactory implements ComputerFactory {	public Computer makeComputer(){		return new Dell();}}package factroyMethod;public class LenovoComputerFactory implements ComputerFactory {	public Computer makeComputer(){		return new Lenovo();}}

 (5)建一个client程序(TestFactroyMethod.java)測试。

package factroyMethod;public class TestFactroyMethod {	public static void main(String []args)throws Exception{		ComputerFactory computerFactory=			new DellComputerFactory();		Computer computer= computerFactory.makeComputer();		computer.run();	}}

执行输出:

戴尔电脑执行了

 

      从输出能够看出,依据须要生成的详细产品。调用相应的子工厂。即使产品添加了种类,仅仅要实现相应的工厂。而不须要改动工厂的源码,工厂的登记相应着产品的等级,改进了简单工厂模式的缺点。

(7)最后,我们再看一下工厂方法模式的UML图。

图1.1 工厂方法模式

推荐文章:

浅析JAVA设计模式之工厂模式(一)

Author: Vicky

Introduction: 教育工作者
Sign:
前事不忘。后事之师

 

转载于:https://www.cnblogs.com/yangykaifa/p/6991968.html

你可能感兴趣的文章
win2003远程超出最大连接数解决办法
查看>>
内存堆和栈的区别
查看>>
MetaWeblog API Test
查看>>
数组方法
查看>>
ACM学习历程—HDU 5073 Galaxy(数学)
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
缓存三大问题
查看>>
python--中的文件操作
查看>>
C# 如何从List集合当中取出子集合
查看>>
如何通过binlog获取我们想要的MySql语句?
查看>>
一线开发读CLR --- 写在最前面
查看>>
Android(java)学习笔记176: 远程服务的应用场景(移动支付案例)
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
(21)模型层 -ORM之msql 聚合查询,F和Q(与、或、非查询)、分组查询
查看>>
tcpcopy 流量复制工具
查看>>
HttpClient 教程 (五)
查看>>
vue和react的区别
查看>>
PHP文件包含漏洞利用
查看>>