前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java设计模式之三---工厂模式

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

作者头像
关忆北.
发布2021-12-07 16:18:27
1570
发布2021-12-07 16:18:27
举报
文章被收录于专栏:关忆北.关忆北.
关于SpringBoot集成使用策略模式请翻阅我的另一篇博客,上边详细介绍了使用方式

基于SpringBoot的策略模式demo

三、工厂模式

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

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

简单工厂又称静态工厂

代码语言:javascript
复制
/**
 * @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

代码语言:javascript
复制
public class CarFactory {
    public Car create() {
        //日志框架
        System.out.println("a car created!");
        return new Car();
    }
}
简单工厂可以完成任意定制不同的工厂实现(生产出不同的对象),比如Car、Plane等,可以实现任意定制生产过程(可以在生成的工厂对象的逻辑中自定义权限、日志、其他业务逻辑等),但是无法实现任意定制产品一族,任意定制产品一族可以使用抽象工厂。
工厂模式之抽象工厂
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于SpringBoot集成使用策略模式请翻阅我的另一篇博客,上边详细介绍了使用方式
  • 三、工厂模式
    • 工厂模式之简单工厂
      • 工厂模式之抽象工厂
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档