一 、工厂方法(Factory Method)模式

工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

二、 工厂方法模式角色与结构

抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。

具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。

抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。

具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。

三、一个简单的实例

// 产品 Plant接口

public interface Plant { }

//具体产品PlantA,PlantB

public class PlantA implements Plant {

public PlantA () {

System.out.println("create PlantA !");

}

public void doSomething() {

System.out.println(" PlantA do something ...");

}

}

public class PlantB implements Plant {

public PlantB () {

System.out.println("create PlantB !");

}

public void doSomething() {

System.out.println(" PlantB do something ...");

}

}

// 产品 Fruit接口

public interface Fruit { }

//具体产品FruitA,FruitB

public class FruitA implements Fruit {

public FruitA() {

System.out.println("create FruitA !");

}

public void doSomething() {

System.out.println(" FruitA do something ...");

}

}

public class FruitB implements Fruit {

public FruitB() {

System.out.println("create FruitB !");

}

public void doSomething() {

System.out.println(" FruitB do something ...");

}

}

// 抽象工厂方法

public interface Abstrac

java设计模式通俗_通俗易懂的Java设计模式之工厂方法模式相关推荐

  1. JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  2. java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  3. Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式

    工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...

  4. 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  5. 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)

    创建型设计模式 单例模式(Singleton Pattern) 单例模式介绍 代码演示 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全, ...

  6. 【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

    文章目录 一.工厂方法模式简介 二.工厂方法模式适用场景 三.工厂方法模式优缺点 四.工厂方法模式代码示例 1.产品抽象类 2.产品实现类 1 3.产品实现类 2 4.抽象工厂类 5.实现工厂类 1 ...

  7. Java设计模式(一) -- 工厂方法模式

    java的设计模式大体上分为三大类: •创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. •结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...

  8. 手撕设计模式之「工厂方法模式」(Java描述)

    前言 工厂方法模式是对简单工厂模式的改进,它通过对工厂类进行抽象形成一个抽象工厂接口,再让具体的工厂负责对应产品的创建,使得在增加产品的场景中也满足"开闭原则".希望通过本文的学习 ...

  9. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

最新文章

  1. 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略
  2. 一键ghost奥运版_超详细的纯净版windows系统重装示例
  3. LaTeX半小时速成究极进化版(修改版)
  4. 如何选择漏电保护器规格型号_施工现场三级电箱如何配置?图示详解,清晰明了!...
  5. Python爬虫开发:正则表达式re的使用
  6. WindowsAPI中PostMessage与SendMessage的区别
  7. java 6 jaxb_JAVA6开发WebService (五)—— JAXB
  8. 连网获取图片的小程序
  9. 使用kafka解决zookeeper is not a recognized option when executing kafka-console-consumer.sh报错
  10. C# ASP.NET 权限设计 完全支持多数据库多语言包的通用权限管理系统组件源码
  11. docker wsl2启动不了_在window上安装docker的方法
  12. python语言入门-python语言入门资料
  13. 【每日算法Day 101】字节跳动 AI Lab 精选面试编程题
  14. android 应用的证书签名跟系统签名
  15. 代码审计:企业级web代码安全架构读书笔记(二)
  16. 高彩色显示图标(转)
  17. 内部投资回报率IRR
  18. 基于javaweb+jsp的学生档案管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)
  19. 又是白嫖Gitee的一天,PicGo+Gitee搭建图床,用过的都说真香!!!
  20. 创维笔试java_创维集团面试经验

热门文章

  1. centos 开机启动java_Centos 7将java jar包自定义开机启动服务
  2. 导致溢出_1篇文章搞清楚8种JVM内存溢出(OOM)的原因和解决方法
  3. linux安装字体时找不到mkfontscale、mkfontdir
  4. py-faster-rcnn在Windows下的end2end训练
  5. 深度学习框架的比较(MXNet, Caffe, TensorFlow, Torch, Theano)
  6. 多继承中构造器和析构器的调用顺序
  7. 爱创课堂每日一题第二天8/24日 Quirks模式是什么?它和Standards模式有什么区别?...
  8. winform自定义控件
  9. Dart的HTTP请求和响应(1)
  10. ckeditor_3.6.6.2+CKFinder2.0.2配置