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.java、Lenovo.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设计模式之工厂模式(一)

http://blog.csdn.net/minidrupal/article/details/38323341

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

浅析JAVA设计模式之工厂模式(二)相关推荐

  1. Java 设计模式之工厂模式(二)

    原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...

  2. Java设计模式(工厂模式>抽象工厂模式和原型模式)

    Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...

  3. java设计模式之工厂模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  4. Java设计模式之工厂模式篇 (转)

    Java设计模式之工厂模式篇 (转)[@more@]Java设计模式之工厂模式篇 作者:冯睿  本文选自:赛迪网 2003年03月07日 .NET.com.cn/servlets/ad?Pool=te ...

  5. Java设计模式之 工厂模式(简单工厂模式)

    前一阵子学习了Java 中据说是最简单的设计模式的 单例模式,想一起讨论学习的小伙伴请点击这里: Java 设计模式之单例模式 那么今天就把学习的工厂模式记录下来 工厂模式: 实现了创建者和调用者的分 ...

  6. Java设计模式之工厂模式 (工厂方法模式)

    上一篇我们学习了简单工厂模式,最后对于增加新产品的缺点,我们在工厂方法模式中解决. 为学习简单工厂模式的小伙伴点击这里Java 设计模式之工厂模式(简单工厂模式) 工厂方法模式要点: 避免简单工厂模式 ...

  7. 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)

    [JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...

  8. 【Java设计模式】工厂模式(案例详解)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  9. JAVA设计模式之工厂模式讲解

    目录 前言 开始表演 前言 Java中使用工厂模式的主要原因是为了实现代码的灵活性和可维护性.工厂模式是一种创建型设计模式,它提供了一种将对象的创建和使用进行分离的方式.具体来说,工厂模式可以将对象的 ...

  10. Java设计模式:工厂模式

    问题提出 Java的工厂模式与现实生活中的工厂的模型是很相似的.工厂是用来做什么?当然是用来生成产品.因此在Java的工厂模式的关键点就是如何描述好产品和工厂这2个角色之间的关系. 下面来仔细描述一下 ...

最新文章

  1. 第五周周记(国庆第一天)
  2. Pycharm连接远程服务器进行代码调试开发
  3. BERT-of-Theseus:基于模块替换的模型压缩方法
  4. mysql数据库入门第二张试卷_2016计算机二级《MySQL数据库》练习题与答案
  5. 6 redis 编译失败_Centos7.8环境搭建Redis主从复制和哨兵模式
  6. 操作系统03进程管理Process_Scheduling
  7. LeetCode 2169. 得到 0 的操作数
  8. 停牌17个月 汉能薄膜真的要复牌了?
  9. android有关医疗实现功能,基于Android的智能医疗监测系统的设计与实现_问答库
  10. MOOCCube:基于MOOC相关研究的开源大规模数据仓库 ACL2020
  11. java九年_Java 9明年9月釋出正式版
  12. 144项大神级ppt制作技术
  13. 个人税收计算器(只限长沙)全线仿照九米个税计算器
  14. openCV 出现 0x770413C5 (ntdll.dll) 第一机会异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲突 解决办法
  15. 利用python批量将excel中文翻译成英文
  16. [Usaco2010 Hol]cowpol 奶牛政坛
  17. 零基础如何速成插画?插画入门教程分享!
  18. Python下载网易云歌单歌曲,这个脚本你给多少分!
  19. Grubbs检验离群值——循环算法求出多个离群值
  20. Xiaojie雷达之路---雷达原理(二刷)相位法测角

热门文章

  1. 分布式 集群 负载均衡含义
  2. jQuery实时校验输入框:整数、浮点数
  3. Go Token获取异常:token contains an invalid number of segments
  4. ACCESS_REFUSED - operation not permitted on the default exchange
  5. OFFICE使用技术:让几个自选图形间距相等
  6. OpenJDK8 JAVA应用窗口在不同缩放比例下的表现(Linux)
  7. Could not initialize English chunker/Could not load file from classpath: ‘/en-token.bin‘
  8. 解决办法:nvidia-docker2指定最新docker,而安装又找不到
  9. 表带可作为显示操作装置
  10. 如何证明永动机不可能制造出来