zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java设计模式之三---工厂模式

2023-04-18 13:13:04 时间

关于SpringBoot集成使用策略模式请翻阅我的另一篇博客,上边详细介绍了使用方式

基于SpringBoot的策略模式demo

三、工厂模式

定义:任何可以产生对象的方法或类,都可以称之为工厂。单例也是一种工厂----静态工厂。

  1. 一个抽象产品类
  2. 多个具体产品类
  3. 一个抽象工厂
  4. 多个具体工厂 - 每一个具体产品对应一个具体工厂
  5. 符合 - OCP开放封闭原则
优点
  1. 降低了代码耦合度,对象的生成交给子类去完成
  2. 实现了开放封闭原则 - 每次添加子产品 不需要修改原有代码
缺点
  1. 增加了代码量,每个具体产品都需要一个具体工厂
  2. 当增加抽象产品 也就是添加一个其他产品族 需要修改工厂 违背OCP

工厂模式之简单工厂

简单工厂又称静态工厂

/**
 * @author Liutx
 * @date 2020/11/30 21:38
 * @Description 生产工具工厂,工厂可以生成不同的工具对象
 */
public class VehicleFactory {
    /**
     * 自定义生产过程,前边可以加日志处理、权限处理等
     *
     * @return
     */
    public Car createCar() {
        return new Car();
    }

    public Broom createBroom() {
        //扫帚的权限控制省略
        return new Broom();
    }

    public Plane createPlane() {
        return new Plane();
    }
}
缺点
  1. 扩展性不好,没新增一种工厂,需要新增一个工厂类。违反OCP开放封闭原则

新增一个工厂方法:CarFactory

public class CarFactory {
    public Car create() {
        //日志框架
        System.out.println("a car created!");
        return new Car();
    }
}
简单工厂可以完成任意定制不同的工厂实现(生产出不同的对象),比如Car、Plane等,可以实现任意定制生产过程(可以在生成的工厂对象的逻辑中自定义权限、日志、其他业务逻辑等),但是无法实现任意定制产品一族,任意定制产品一族可以使用抽象工厂。

工厂模式之抽象工厂