千家信息网

怎么用Java代码实现工厂方法模式

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下怎么用Java代码实现工厂方法模式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2026年11月02日怎么用Java代码实现工厂方法模式

今天小编给大家分享一下怎么用Java代码实现工厂方法模式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 工厂方法模式介绍

定义:工厂方法模式是对简单工厂模式进一步的抽象化,好处是可以使系统不修改原来代码的情况下引进新的产品,即满足开闭原则。定义一个用于创建对象接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类中。

2. 工厂方法模式类图UML

3. 工厂方法模式角色说明

抽象工厂(AbstractFactory):提供了创建产品的接口,调用方通过它访问具体工厂的工厂方法来创建产品

具体工厂(ConcreteFactory):实现了抽象工厂定义的方法,完成具体产品的创建

抽象产品(Product):定义了产品的规范,描述产品的主要特征和性能

具体产品(ConcreteProduct):实现了抽象产品的定义的方法,有具体工厂来创建产品,具体工厂和具体产品一一对应

4. 代码实现

工厂方法模式实现:

/** * 抽象工厂:提供具体工厂的共有方法 */public interface Product {    public void show();}public class ConcreteProduct1 implements Product {    @Override    public void show() {        System.out.println("具体产品1展示...");    }}public class ConcreateProduct2 implements Product {    @Override    public void show() {        System.out.println("具体产品2展示...");    }}/** * 抽象工厂 */public interface AbstractFactory {    public Product createProduct();}/** * 具体工厂1产生具体产品1 */public class ConcreteFactory1 implements AbstractFactory {    @Override    public Product createProduct() {        ConcreteProduct1 concreteProduct1 = new ConcreteProduct1();        System.out.println("具体工厂1创建具体产品1...");        return concreteProduct1;    }    public class ConcreteFactory2 implements AbstractFactory {    @Override    public Product createProduct() {        System.out.println("具体工厂2产生具体产品2...");        return new ConcreateProduct2();    }}

调用方法:

//获取具体产品1        Product product = new ConcreteFactory1().createProduct();        product.show();        Product product1 = new ConcreteFactory2().createProduct();        product1.show();

使用步骤:

  • 创建抽象产品类,定义产品的公共方法

  • 创建具体产品类(实现抽象产品接口),定义生成的具体产品

  • 创建抽象工厂类,定义具体工厂的公共接口

  • 创建具体工厂类,定义创建对应具体产品实例的方法

  • 调用方调用具体的工厂类的方法,从而创建不同具体产品的实例

5. 工厂模式再探究

解决问题:解决了简单工厂类新增产品需要修改工厂类的方法逻辑问题,即为别开闭原则。

将具体的产品创建退出到工厂类的子类(具体工厂),此时工厂类不再负责所有产品的创建,而是给出具体工厂必须实现的接口,这样工厂方法在添加新的产品的时候,就不需要修改工厂类的逻辑,而是添加了新的工厂子类,符合开闭原则。

6. 优缺点

优点:

  • 灵活性强,对于新产品的创建,只需要多写一个对应的工厂类

  • 用户只需要指导工厂的名称就可以获得所要的产品,不需要指导产品具体创建过程

缺点:

  • 类的个数容易过多,增加了复杂度

  • 每一个工厂只能生产一种产品,次弊端可以使用抽象工厂模式解决

7. 应用场景

客户只关注创建产品的工厂名,不需要知道具体的产品名称

以上就是"怎么用Java代码实现工厂方法模式"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

工厂 产品 方法 模式 接口 代码 子类 实例 知识 篇文章 原则 逻辑 不同 内容 名称 品类 而是 问题 指导 复杂 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技巨头监管 A股互联网金融科技公司 新华互联网科技学院 互联网 科技公司 互联网公司 科技公司 北京互联网科技 以房互联网科技 新浪科技互联网 科技类的互联网平台 宝灵互联网科技有限公司 晓花互联网科技有限公司网址 哈尔滨屹滨互联网科技有限公司 广东工业互联网大赛深圳学泰科技 江苏互联网科技小贷 2021世界互联网领先科技成果发布 互联网科技包装股 美国五大互联网科技公司市值多少 伍佰万互联网科技是干嘛的 大白互联网科技 以后互联网后是啥科技 互联网金融科技公司干啥的 互联网科技革命什么开始 杭州壁岐互联网科技有限公司 注册互联网科技公司经营范围大全 华夏恒生互联网科技013171 特约风豹互联网科技为什么扣费 互联网科技资金流入 互联网高科技绘画
0