工厂方法模式:

/**
* 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口,
* 而子类工厂负责创建具体的产品对象。
* 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过子类工厂类决定实例化哪一个具体对象。
*
* 工厂方法模式包含四个部分:
* 1.抽象产品: 产品对象的基类,或者是同一的接口。
* 2.具体的子类产品:各个不同的实例对象类。
* 3.抽象工厂: 所有子类工厂的基类,或同一接口。
* 4.具体的工厂子类:负责每个产品对象的具体创建。
*/

  1. /**
  2. * 抽象产品,交通工具接口
  3. * @ClassName: TrafficTool
  4. * @author BlueLake
  5. * @date 2014年9月10日 下午4:42:10
  6. */
  7. public interface TrafficTool {
  8. //去上班的抽象方法
  9. public void gotoWork();
  10. }
  1. /**
  2. * 抽象工厂:交通工具工厂
  3. * @ClassName: TrafficFactory
  4. * @author BlueLake
  5. * @date 2014年9月10日 下午4:43:53
  6. */
  7. public interface TrafficFactory {
  8. //创建交通工具的抽象方法
  9. public TrafficTool getTool();
  10.  
  11. }
  1. package demo.mode.factory;
  2. //具体产品:自行车
  3. public class Bike implements TrafficTool{
  4. //具体上班方法
  5. public void gotoWork(){
  6. System.out.println("骑自行车去上班-bike-");
  7. }
  8.  
  9. }
  1. package demo.mode.factory;
  2. //具体工厂:自行车工厂
  3. public class BikeFactory implements TrafficFactory{
  4. //生成自行车对象
  5. public TrafficTool getTool(){
  6. return new Bike();
  7. }
  8.  
  9. }
  1. package demo.mode.factory;
  2. //具体产品:公交车
  3. public class Bus implements TrafficTool{
  4. //具体上班方法
  5. public void gotoWork() {
  6. System.out.println("坐公交车上班---bus---");
  7. }
  8.  
  9. }
  1. package demo.mode.factory;
  2. //具体工厂:公交车
  3. public class BusFactory implements TrafficFactory{
  4. //生成公交车
  5. public TrafficTool getTool() {
  6. return new Bus();
  7. }
  8. }

测试:

  1. package demo.mode.factory;
  2.  
  3. public class FactoryTest {
  4. /**
  5. * 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口,
  6. * 而子类工厂负责创建具体的产品对象。
  7. * 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过子类工厂类决定实例化哪一个具体对象。
  8. *
  9. * 工厂方法模式包含四个部分:
  10. * 1.抽象产品: 产品对象的基类,或者是同一的接口。
  11. * 2.具体的子类产品:各个不同的实例对象类。
  12. * 3.抽象工厂: 所有子类工厂的基类,或同一接口。
  13. * 4.具体的工厂子类:负责每个产品对象的具体创建。
  14. */
  15. public static void main(String[] args){
  16. //定义公共的变量,工厂接口
  17. TrafficFactory fac = null;
  18. TrafficTool tool = null;
  19.  
  20. //具体调用时,只需要调用不同的工厂就可以实现不用的操作。
  21. fac = new BikeFactory();
  22. tool = fac.getTool();
  23. tool.gotoWork();//骑自行车去上班-bike-
  24.  
  25. fac = new BusFactory();
  26. tool = fac.getTool();
  27. tool.gotoWork();//坐公交车上班---bus---
  28. }
  29. }

工厂方法模式,到此就学会了。

简单吧!

Java工厂方法模式的更多相关文章

  1. 设计模式(三)——Java工厂方法模式

    工厂方法模式 1 看一个新的需求 披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪 pizza.北京的胡椒 pizza 或者是伦敦的奶酪 pizza.伦敦的胡椒 pizza. ...

  2. java 工厂方法模式简单实例

    工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象. 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究 ...

  3. Java 工厂方法模式的简单示例

    工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象. 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究 ...

  4. JAVA工厂方法模式(Factory Method)

    1.普通工厂模式 普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 1-1.建立Sender接口 public interface Sender { public void ...

  5. Java 工厂方法模式

    在工厂对象上调用创建方法,生成接口的某个实现的对象 通过这种方式,接口与实现分离 方法接口 /** * 方法接口 */ public interface Service { void method1( ...

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

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  7. JAVA设计模式--工厂方法模式

    工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关 ...

  8. Java设计模式3:工厂方法模式

    工厂方法模式 工厂方法模式是类的创建模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中. 工厂方法模式 工厂方法模式是对简单工厂模式进一步抽象的结果. 假如是不使用反 ...

  9. java设计模式(二)---工厂方法模式

    2普通工厂方法模式 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 2.1创建接口 /** * 发送接口 * Created by mrf on 2016/2/25. */ public ...

随机推荐

  1. Jmeter 接口测试知识梳理——环境搭建篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! 环境搭建篇 很多文章介绍 ...

  2. if标签

    If标签如果php中if语句的作用,if是用于流程控制的. 在ThinkPHP中if标签也是用于流程控制的. If标签的语法格式: <if condition=’条件表达式’> 输出结果1 ...

  3. RESTful Web Services中API的设计原则(转)

    当下前后端分离的设计已经是web app开发的标配,但是如何设计一个强壮,扩展性好,又规范的API呢 参考以下link,可以得到需要有益的启示.同时个人推荐一本书<web API的设计和开发&g ...

  4. [Solution] The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path

    HttpServlet需要tomcat等. 右键project点开properties>project facets> 在右侧栏的Runtime tab中勾选tomcat或者新建tomca ...

  5. 雷林鹏分享:XML 简介

    XML 简介 XML 被设计用来传输和存储数据. HTML 被设计用来显示数据. 应该掌握的基础知识 在您继续学习之前,需要对以下知识有基本的了解: HTML JavaScript 如果您希望首先学习 ...

  6. org.hibernate.id.IdentifierGenerationException

    [问题]org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned bef ...

  7. PCM数据格式

    PCM数据格式          1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit ster ...

  8. LeetCode--844--比较含退格的字符串(java)

    给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...

  9. CentOS7 安装Nginx 1.14:

      nginx-1.14.2.tar.gz:下载:wget http://nginx.org/download/nginx-1.14.2.tar.gz 安装nginx:   yum  install  ...

  10. MySql之安装以及设置密码等

    1.MySQL的下载安装.简单应用及目录介绍 1.下载安装 windows10的:https://www.cnblogs.com/clschao/articles/9916971.html linux ...