简单工厂模式

作者: Jackson杰 | 来源:发表于2018-12-07 12:04 被阅读18次

一 介绍

所谓工厂,就是生产产品的,那么对于代码的工厂应该怎么理解呢?
简单工厂模式属于创建性模型,但不属于23种GOF设计模式之一。简单工厂模式虽然不是一个标准的设计模式,但是它常用了,所以掌握好它,就当是学习设计模式的热身吧。

二 定义

提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口,抽象类,也可以是具体类。

三 模拟场景

现在模拟一个汽车的生产工厂,有两个汽车生产工厂,分别生产Audi和Benz汽车,现在用简单工厂模式来模拟实现过程。
简单工厂模式的UML图如下所示:

根据UML图,简单工厂模式的实现步骤为

1 创建一个接口,模拟汽车工厂汽车生产的核心过程。
public interface CarProduct {
    void productCar();
}

2 创建两个汽车生产工厂,分别生产Audi和Benz汽车。

Audi生产过程

public class AudiCarFactory implements CarProduct {
    @Override
    public void productCar() {
        System.out.println("生产了一辆Adui车");
    }
}

Benz生产过程

public class BenzCarFactory implements CarProduct {
    @Override
    public void productCar() {
        System.out.println("生产了一辆Benz车");
    }
}

如果不用简单工厂模式,如果客户需要一台Audi和Benz汽车,则实现过程如下:
客户端实现:

 // 生产Audi汽车
 AudiCarFactory audiCarFactory=new AudiCarFactory();
 audiCarFactory.productCar();
 // 生产Benz汽车
 BenzCarFactory benzCarFactory=new BenzCarFactory();
 benzCarFactory.productCar();

有什么问题呢,可以看到,两个工厂的实现,都在客户端暴露出来了。假设你有很多的客户,每个客户都是这种操作,如果生产汽车的工艺提升了,也就是说AudiCarFactory这个类发生了变化,导致new的时候必须要变化时,你就不得不到每个客户那修改。实际上是耦合比较高的表现。

下面用简单工厂实现:

3 建立生产工厂

public class CarFactory {

    public CarProduct getCarFactory(String type) {
        if (type == null) {
            return null;
        }
        switch (type) {
            case "audi":
                return new AudiCarFactory();
            case "benz":
                return new BenzCarFactory();
            default:
                return null;
        }

    }

}

4 客户端实现

 // 得到工厂对象
        CarFactory carFactory=new CarFactory();
        // 生产Audi汽车
        AudiCarFactory audiCarFactory= (AudiCarFactory) carFactory.getCarFactory("audi");
        audiCarFactory.productCar();
        // 生产Benz汽车
        BenzCarFactory benzCarFactory= (BenzCarFactory) carFactory.getCarFactory("benz");
        benzCarFactory.productCar();

以上实现了简单工厂模式,可以看到,在客户端不用进行new操作就可以获取实例,实现了解耦,实现简单,如果要新增一个实例,只要新增一个实现类和修改工厂方法即可,客户端无需关心实现类。

相关文章

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • 相近设计模式比较

    设计模式干货: 简单工厂模式 vs. 工厂模式 vs. 抽象工厂模式简单工厂和工厂模式区别? 简单工厂没有多个子类...

  • Android设计模式:工厂设计模式

    目录 简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式是所有工厂模式的基础,不属于23种设计模式范...

  • 设计模式2-工厂模式

    工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式 简单工厂模式 简单工厂模式,就是建立一个工厂类,对实现了同一...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 设计模式-工厂模式

    一、工厂模式分类 简单工厂模式 工厂方法模式 抽象工厂模式 二、简单工厂模式 简单工厂就是讲需要new对象的那段代...

网友评论

    本文标题:简单工厂模式

    本文链接:https://www.haomeiwen.com/subject/spxicqtx.html