元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • 设计模式

    • 设计模式简介
    • 设计模式之单例模式
    • 设计模式之工厂模式
      • 一、简介
      • 二、实现方式
        • 1、简单工厂模式(Simple Factory Pattern),又称 静态工厂方法
        • 2、工厂方法模式(Factory Method Pattern)
        • 3、抽象工厂模式(Abstract Factory Pattern)
      • 三、应用
        • 1、Spring中的简单工厂模式:BeanFactory
        • 2、Spring中的工厂方法模式:FactoryBean
      • 四、思维导图
    • 设计模式之原型模式
    • 设计模式之建造者模式
    • 设计模式之适配器模式
    • 设计模式之桥接模式
    • 设计模式之组合模式
    • 设计模式之装饰器模式
    • 设计模式之外观模式
    • 设计模式之享元模式
    • 设计模式之代理模式
    • 设计模式之责任链模式
    • 设计模式之命令模式
    • 设计模式之解释器模式
    • 设计模式之迭代器模式
    • 设计模式之中介者模式
    • 设计模式之备忘录模式
    • 设计模式之观察者模式
    • 设计模式之状态模式
    • 设计模式之策略模式
    • 设计模式之模版模式
    • 设计模式之访问者模式
    • 设计模式辨析篇
  • 高可用

  • 系统设计
  • 设计模式
元月
2022-08-03
目录

设计模式之工厂模式

# 设计模式之工厂模式

# 一、简介

创建对象时不会对客户端暴露其创建逻辑,而是通过调用一个共同的接口

# 二、实现方式

# 1、简单工厂模式(Simple Factory Pattern),又称 静态工厂方法

根据传入的参数,由工厂类动态的决定应该创建哪一个产品类

image-20220802181900694

public class SimpleFactory {
    public Car getCar(String name) {
        if ("BMW".equalsIgnoreCase(name)) {
            return new Bmw();
        } else if ("Benz".equalsIgnoreCase(name)) {
            return new Benz();
        } else if ("Audi".equalsIgnoreCase(name)) {
            return new Audi();
        } else {
            System.out.println("这个产品产不出来");
            return null;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2、工厂方法模式(Factory Method Pattern)

主要有两个类,工厂父类和工厂子类,工厂父类负责提供创建产品对象的公共接口,而工厂子类负责创建具体的产品对象

image-20220802181900694

测试类:

public class FactoryTest {
    public static void main(String[] args) {
        //1.首先先创建一个奥迪工厂出来
        Factory factory = new AudiFactory();
        //2.然后根据工厂得到奥迪车,具体的造车工厂交给工厂来完成
        System.out.println(factory.getCar());
        factory = new BmwFactory();
        System.out.println(factory.getCar());
    }
}
1
2
3
4
5
6
7
8
9
10

# 3、抽象工厂模式(Abstract Factory Pattern)

围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂

image-20220802181900694

测试类:

public class FactoryTest {
    public static void main(String[] args) {
        //1.先创建具体抽象工厂
        AbstractFactory abstractFactory = new CarFactory();
        //2.根据具体的抽象工厂得到车
        Car audi  = abstractFactory.getAudiCar();
        System.out.println(audi.getName());
    }
}
1
2
3
4
5
6
7
8
9

# 三、应用

# 1、Spring中的简单工厂模式:BeanFactory

image-20220802181900694

# 2、Spring中的工厂方法模式:FactoryBean

在Spring的getBean()方法的逻辑中,会判断这个bean是否是一个FactoryBean,如果是的话,会调用FactoryBean的getObject()方法,最终返回的是getOjbect()这个方法的返回值。

# 四、思维导图

image-20220802181900694

#设计模式
设计模式之单例模式
设计模式之原型模式

← 设计模式之单例模式 设计模式之原型模式→

最近更新
01
otter二次开发-支持按目标端主键索引Load数据
08-03
02
mvnw简介
06-21
03
gor流量复制工具
06-03
更多文章>
Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式