工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;

Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。

package com.juno.FactoryPattern;
//抽象产品类,具体的产品类可以有很多个,都继承于抽象产品类
public abstract class Product {// 产品类的公共方法public void method1() {// TODO 业务逻辑处理}// 抽象方法public abstract void method2();
}
package com.juno.FactoryPattern;
// 具体产品类
public class ConcreteProduct1 extends Product {@Overridepublic void method2() {// TODO 业务逻辑处理}}
package com.juno.FactoryPattern;
//具体产品类
public class ConcreteProduct2 extends Product {@Overridepublic void method2() {// TODO 业务逻辑处理}}
package com.juno.FactoryPattern;
// 抽象工厂类,负责定义产品对象的产生
public abstract class Creator {/*** 创建一个产品对象,其输入参数可以自行设置* 通常为String、Enum、Class等,当然也可以为空*/public abstract <T extends Product> T createProduct(Class<T> c);}
package com.juno.FactoryPattern;
// 具体工厂类,具体如何产生一个产品的对象,是由具体的工厂类实现的
public class ConcreteCreator extends Creator{@Overridepublic <T extends Product> T createProduct(Class<T> c) {Product product = null;try {product = (Product) Class.forName(c.getName()).newInstance();} catch (Exception e) {// TODO 异常处理}return (T)product;}}
package com.juno.FactoryPattern;
// 场景类
public class Client {public static void main(String[] args) {Creator creator = new ConcreteCreator();Product product1 = creator.createProduct(ConcreteProduct1.class);product1.method1();product1.method2();ConcreteProduct2 product2 = creator.createProduct(ConcreteProduct2.class);product2.method1();product2.method2();}
}

Java设计模式笔记(2)工厂方法模式相关推荐

  1. Java 设计模式之静态工厂方法模式

    设计模式系列 创建型设计模式 Java 设计模式之单例模式 Java 设计模式之静态工厂方法模式 Java 设计模式之工厂方法模式 Java 设计模式之抽象工厂模式 Java 设计模式之Builder ...

  2. java简单工厂模式实例造车,JAVA设计模式学习5——工厂方法模式

    工厂方法模式(Factory Method)又称虚拟构造子模式,可以说是简单工厂的抽象,也可以理解为简单工厂是退化了的工厂方法模式,其表现在简单工厂丧失了工厂方法的多态性.我们前一节中提到当产品结构变 ...

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

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

  4. Java啤酒生产系统描述_Java描述设计模式(03):工厂方法模式

    一.工厂方法模式 1.生活场景 系统常见的数据导出功能:数据导出PDF.WORD等常见格式. 2.工厂方法模式 是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性 ...

  5. Java描述设计模式(03):工厂方法模式

    一.工厂方法模式 1.生活场景 系统常见的数据导出功能:数据导出PDF.WORD等常见格式. 2.工厂方法模式 是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性 ...

  6. JAVA设计模式笔记(简单工厂模式)

    有一个水果加工工厂,我们的需求是实现加工水果的功能.常见的做法是创建一个水果抽象类,写一个抽象的加工方法,然后创建具体的水果类去继承抽象类,再去实现抽象方法,最后客户端再去新建对象实例. public ...

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

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

  8. 【设计模式学习】工厂方法模式

    cpp学习设计模式:工厂方法模式 在学习工厂方法模式之前,先回忆前面学的简单工厂模式: 简单工厂模式就是将对象的创建和逻辑的判断都交给了一个工厂类去做,这样做的优点是客户端不需要知道具体产品类的类名和 ...

  9. 设计模式系列之 工厂方法模式

    定义 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 该定义是对生产者一方的描述,涉及四种角色,包括接口.接口实现类.被实例化的类.抽象产品(隐 ...

  10. 设计模式之四:工厂方法模式(披萨店生产披萨模拟流程)

    工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类.(披萨店生产披萨模拟流程) 工厂方法模式通过让子类决定该创建的对象是什么,来达到将对象的过程封 ...

最新文章

  1. android studio配置系列 - 收藏集 - 掘金
  2. 使用JavaScript实现页面选项自动添加行以及删除行 javaweb
  3. app账号退不出去_最新!多交的税可以退,同学,你今天退税了吗?
  4. c# 事件和委托的区别,使用事件的好处
  5. c语言合法常量e8,c语言合法常量定义
  6. js隐藏打开项目隐藏编辑 和删除按钮
  7. 如何在Linux和Mac中清除Bash历史记录
  8. tomcat7安装以及环境变量配置
  9. 程序员玩游戏之四--娱网棋牌大连打滚子记牌器
  10. iOS视频转Gif(附example code)
  11. HTC Desire获取ROOT方法--HTC Desire rooting guide (now with new improved / easier root method!)
  12. sqlserver2012(and mysql)数据库简单内外连接-双表-三(多)表查询
  13. 安装MikTex并成功编译中文PPT模板详细过程
  14. 树莓派有can通信吗_树莓派 RS485 CAN HAT模块使用
  15. Lumen企业站内容管理实战 - 网站配置
  16. Django项目实践(商城):十五、商品列表页面
  17. CC2530学习(一)CC2530微控制器介绍
  18. ##求助!Python编程从入门到实践 外星人飞船问题
  19. 漂亮国站-亚马逊跨境电商平台新规定
  20. 人工智能全球发展趋势、经济影响和未来挑战

热门文章

  1. Android 调用系统相机拍照和录制视频,保存照片和视频
  2. Cannot fit requested classes in a single dex file. Try supplying a main-dex list.
  3. mongoose populate 返回 指定 字段
  4. 服务器的性能监测及工具(profmon)
  5. 计算机网络管理员demo,计算机网络试题demo
  6. 应用数学软件测试题,高等数学第六章定积分应用综合测试题
  7. js 正则表达式实现文本验证
  8. 1005 继续(3n+1)猜想 (25分)
  9. 模板——树状数组求逆序对
  10. php下载文件添加header响应头