创建型模式之Factory Method(工厂方法)

创建型模式之Factory Method(工厂方法)

摘要:

工厂方法模式是一种创建型设计模式,通过将对象实例化延迟到子类来实现解耦。该模式包含抽象工厂接口、具体工厂类、抽象产品和具体产品四个要素,相比简单工厂模式更具扩展性。文章展示了工厂方法模式的结构图,并提供了Java代码示例,演示如何通过不同工厂(FactoryA/FactoryB)创建对应产品(ProductA/ProductB)的过程,体现了多态特性。这种模式适用于需要灵活扩展产品类型的场景,遵循开闭原则,但会引入更多类。

1.前言:

工厂方法模式是一种创建型设计模式,它将对象实例化延迟到子类。该模式通过定义一个创建对象的接口,让子类决定实例化哪个类,实现了父类与具体产品的解耦。结构上包含抽象工厂接口、具体工厂类、抽象产品和具体产品四个要素。相比简单工厂模式,工厂方法模式更具扩展性,符合开闭原则,但会引入更多类。示例代码展示了如何使用工厂方法创建不同产品(ProductA/ProductB)的过程,体现了"父类对象指向子类实例"的多态特性。这种模式适用于需要灵活扩展产品类型的场景。

1.简单工厂 -->> 2.工厂方法 -->> 3.抽象工厂 -->> 4.生成器 -->> 5.原生 --->> 6.单例

1,设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便地复用成功的设计和体系结构

2.设计模式基本要素:

  • 模式名称(Pattern Name)
  • 问题(Problem)
  • 解决方案(Solution)
  • 效果(Consequences)

1)意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

2)结构:创建型类模式

3.代码

c 复制代码
/**
 * 工厂方法模式  
 */
public class SimpleFactory {
    public static void main(String[] args) {
        
        // 父类 对象名 = new 子类();
        Factory factoryA = new FactoryA();
        Product productA = factoryA.createProduct();
        productA.info();

        Factory factoryB = new FactoryB();
        Product productB = factoryB.createProduct();
        productB.info();

    }
}

interface Factory {
   public Product createProduct();
}

class FactoryB implements Factory{
    @Override
    public Product createProduct() {
        return new ProductB();
    }
}
class FactoryA implements Factory{
    @Override
    public Product createProduct() {
        return new ProductA();
    }
}

interface Product {
    void info();
}

class ProductA implements Product {
    public void info() {
        System.out.println("A产品");
    }
}

class ProductB implements Product {
    public void info() {
        System.out.println("B产品");
    }
}

喜欢我的文章记得点个在看,或者点赞,持续更新中ing...

相关推荐
ZYJCSZKJ9 小时前
基于地理位置围栏的短视频POI团购系统:LBS空间索引与流量分发实践
java·服务器·数据库
mldong15 小时前
引擎从不发一条消息:jeeflow 的两类扩展点与消息模块的分工
java·架构
君顾115 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
zhanghe68716 小时前
es的密码带有特殊字符,导出
java
平头哥技术团队16 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
pnoker16 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy16 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
天远数科17 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
冬木家居17 小时前
40㎡客厅变形记,小家住出大自由[特殊字符]
android·经验分享·笔记·智能家居·微信公众平台
骇客野人17 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端