设计模式学习笔记(三)简单工厂、工厂方法和抽象工厂之间的区别

本文介绍了设计模式中的简单工厂、工厂方法和抽象工厂模式,详细阐述了它们的区别和应用场景。简单工厂适用于产品较少且不易扩展的情况;工厂方法遵循开闭原则,扩展性强;抽象工厂则用于创建相关产品族,减少工厂类数量。举例说明了在Java、Spring、Slf4j等中的应用。
摘要由CSDN通过智能技术生成

设计模式中的工厂模式(Factory Design pattern)是一个比较常用的创建型设计模式,其中可以细分为三种:简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。那么三者有什么区别呢?先说结论:

  • 简单工厂:只有唯一工厂(简单工厂),一个产品接口/抽象类,根据简单工厂中的静态方法来创建具体产品对象。适用于产品较少,几乎不扩展的情景
  • 工厂方法:有多个工厂(抽象工厂+多个具体工厂),一个产品接口/抽象类,根据继承抽象工厂中的方法来多态创建具体产品对象。适用于一个类型的多个产品
  • 抽象方法:有多个工厂(抽象工厂+多个具体工厂),多个产品接口/抽象类,对产品子类进行分组,根据继承抽象工厂中的方法多态创建同组的不同具体产品对象。适用于多个类型的多个产品

更多学习资源获取:评论区留言或是私信获取到哦

下面具体展开说明

一、简单工厂模式(Simple Factory Pattern)#

1.1 简单工厂模式介绍#

简单工厂模式又叫做静态工厂方法模式(static Factory Method pattern),它是通过使用静态方法接收不同的参数来返回不同的实例对象。我们通过一个类图来进行讲解:

  • Product接口:定义要创建的产品对象的接口
  • ProductAProductBProductC产品类:实现产品接口,具有产品接口特性的具体产品
  • SimpleFactory简单工厂:只有一个工厂,通过静态方法createProduct创建具体的产品对象
  • client客户端:客户端有多个,每个客户端可以通过简单工厂来创建具体的产品对象

1.2 简单工厂模式实现#

我们以上面类图为例,实现简单工厂模式:

/**产品接口**/
public interface Product {

    void doSomething();
}

/**具体产品实现**/
class ProductA implements Product{

    @Override
    public void doSomething() {
        System.out.println("我是ProductA");
    }
}

class ProductB implements Product{

    @Override
    public void doSomething() {
        System.out.println("我是ProductB");
    }
}

class ProductC implements Product{

    @Override
    public void doSomething() {
        System.out.println("我是ProductC");
    }
}
/**简单工厂**/
public class SimpleFactory {
    /**工厂类创建产品静态方法**/
    public static Product createProduct(String productName) {
        Product instance = null;
        switch (productName){
            case "A":
                instance = new ProductA();
                break;
            case "B":
                instance = new ProductB();
                break;
            case "C":
                instance = new ProductC();
        }
        return instance;
    }
    /**客户端(client)调用工厂类**/
    public static void main(String[] args) {
        SimpleFactory simpleFactory = new SimpleFactory();
        c
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值