Java工厂模式怎么实现
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇内容介绍了"Java工厂模式怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概念: 工厂模
千家信息网最后更新 2025年01月31日Java工厂模式怎么实现
本篇内容介绍了"Java工厂模式怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
概念: 工厂模式负责将大量有共同接口的类实例化。
相关角色: 抽象工厂:创建对象的具体工厂类必须实现这个接口 具体工厂:实现了抽象工厂接口的具体工厂类 抽象产品:创建的具体对象的超类型(父抽象类或父接口) 具体产品:创建的具体对象。
1)简单工厂模式(静态工厂方法模式):
概念:新建一个工厂类,该工厂类有一个静态的工厂方法,根据这个静态工厂方法的入参来决定创建的对象是哪个类型。 实现: // 工厂类 public class Creator { // 静态工厂方法:根据入参condition来决定返回对象的类型。 public static ConcreteProduct factory(condition){ if (condition 满足 条件A) { return new ConcreteProductA(); // 注:ConcreteProduct是ConcreteProductA和ConcreteProductB的超类 } else if (condition 满足 条件B) { return new ConcreteProductB(); } else { // 返回一个默认ConcreteProductX对象 或 直接抛出异常 } } } 缺点:新增类型(eg:ConcreteProductC)时,需要修改静态工厂方法,没有开闭原则的要求。 举例:java.text.DateFormat的getDateInstance()方法。注:DateFormat这个工厂类,是通过重载getDateInstance()方法的方式来进行条件的判断。
2)工厂方法模式:
概念:新建一个工厂接口(或工厂抽象类)、多个具体工厂类,所有的具体工厂类都实现了工厂接口中定义的工厂方法,每个具体工厂类只产生特定类型的对象。 实现: // 抽象工厂 public interface Creator { // 工厂方法 public Product factory(); } // 具体工厂ConcreteCreatorA 实现了工厂接口Creator public class ConcreteCreatorA implements Creator { // 工厂方法 public Product factory() { return new ProductA(); } } // 具体工厂ConcreteCreatorB 实现了工厂接口Creator public class ConcreteCreatorA implements Creator { // 工厂方法 public Product factory() { return new ProductB(); } } 缺点:新增类型(eg:ProductC)时,需要新增对应的具体工厂,当类型较多时(具体工厂类也会随之增多),不容易维护。 注意: 工厂方法模式和模板方法模式的比较: 1)二者都是基于方法的,都是将具体工作交给子类。 2)工厂方法模式将创建的工作推延给子类,模板方法模式将剩余的逻辑交给子类。 举例:java集合中的工厂模式: // 抽象工厂 public interface Listextends Collection { Iterator iterator(); // 工厂方法 } // 具体工厂 public class ArrayList implements List { public Iterator iterator() { return new Itr(); // java.util.Vector.Itr 实现了Iterator 接口 } } // 具体工厂 public class Vector implements List { public synchronized Iterator iterator() { return new Itr(); // java.util.ArrayList.Itr 实现了Iterator 接口 } }
3)抽象工厂模式:
概念:新建一个工厂接口(或工厂抽象类)、一个具体工厂类,这个具体工厂类实现了工厂接口中定义的多个工厂方法,故这个具体工厂类可以产生多种类型的对象。 实现: // 抽象工厂:规定了多个工厂方法 public interface Creator { // 创建A系列产品对象的工厂方法 public ProductA factoryA(); // 创建B系列产品对象的工厂方法 public ProductB factoryB(); } // 具体工厂:实现了抽象工厂的多个工厂方法 public class ConcreteCreator implements Creator { // 创建A类产品对象的工厂方法 public ProductA factoryA() { return new ProductA1(); // 注:ProductA1 implements ProductA } // 创建B类产品对象的工厂方法 public ProductB factoryB() { return new ProductB1(); // 注:ProductB1 implements ProductB } } 缺点:新增其它系列(eg:ProductC)的产品时,需要修改抽象工厂(在抽象工厂中添加新的工厂方法)。
"Java工厂模式怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
工厂
方法
模式
对象
接口
类型
产品
静态
多个
概念
子类
条件
缺点
内容
更多
模板
知识
工作
实用
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
与ntp服务器同步
无线网络技术当前发展形势
汕头社交软件开发费用是多少
设备材料大数据库
网络安全专业的应用
深圳 软件开发发票 退税
长沙软件开发组长薪资
网络安全小报 百度文库
cbm数据库教程
社区支行网络安全
细菌蛋白已有的数据库
浪潮服务器中标单位
建一个两台服务器的机房要多少钱
灌云品质网络技术推荐咨询
access数据库入门教程
软件开发人员为什么年龄大
北京市自然灾害数据库
仙桃放心的软件开发公司
长春博远互联网科技有限公司
服装数据库管理系统
蓝牙无线网络技术是什么
软件开发人员工资退税
河南单招软件开发大学
土壤墒情软件开发
移动通信用户位置数据库
惠连网络技术有限公司怎么样
如何防止数据库删除
品高软件开发者
java bs 网络安全
海外华人互联网科技论坛