当前位置: 首页 > news >正文

【设计模式】四、工厂模式

文章目录

    • 概述工厂模式
    • 简单工厂模式:
    • 工厂方法模式
    • 抽象工厂模式
    • 小结

概述工厂模式

传统方式:
在这里插入图片描述

简单工厂模式:

在这里插入图片描述

简单工厂模式的设计方案: 定义一个可以实例化 Pizaa 对象的类,封装创建对象的代码。

存在的问题:
简单工厂模式,创建不同的简单工厂类,比如 BJPizzaSimpleFactory、LDPizzaSimpleFactory 等等.从当前
这个案例来说,也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好

工厂方法模式

定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。
在这里插入图片描述

抽象工厂模式

就是把工厂方法模式中各个工厂抽出抽象类实现
在这里插入图片描述

public interface AbsFactory {//让下面的工厂子类来 具体实现public Pizza createPizza(String orderType);
}
public class PizzaStore {public static void main(String[] args) {// TODO Auto-generated method stub//new OrderPizza(new BJFactory());new OrderPizza(new LDFactory());}}
//接收使用抽象工厂
public class OrderPizza {AbsFactory factory;// 构造器public OrderPizza(AbsFactory factory) {setFactory(factory);}
}

小结

  1. 工厂模式的意义
    将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性。
  2. 三种工厂模式 (简单工厂模式、工厂方法模式、抽象工厂模式)
  3. 设计模式的依赖抽象原则
  • 创建对象实例时,不要直接 new 类, 而是把这个 new 类的动作放在一个工厂的方法中,并返回。有的书上说,变量不要直接持有具体类的引用。
  • 不要让类继承具体类,而是继承抽象类或者是实现 interface(接口)
  • 不要覆盖基类中已经实现的方法。
http://www.lryc.cn/news/177681.html

相关文章:

  • 十九,镜面IBL--BRDF积分贴图
  • Linux 创建 终止线程(thread)
  • 【IPC 通信】信号处理接口 Signal API(6)
  • ipaguard界面概览
  • 萌新的FPGA学习绪论-1
  • 目标检测算法改进系列之Backbone替换为EMO
  • Laravel一些优雅的写法
  • vue+three.js中使用Ammo.js
  • 【k8s】kubectl命令详解
  • Centos 7 部署SVN服务器
  • SEO方案尝试--Nuxtjs项目基础配置
  • 【算法分析与设计】动态规划(上)
  • Java多线程篇(6)——AQS之ReentrantLock
  • 【计算机网络】IP协议第二讲(Mac帧、IP地址、碰撞检测、ARP协议介绍)
  • TouchGFX界面开发 | 按钮控件应用示例
  • BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
  • 共同见证丨酷雷曼武汉运营中心成立2周年
  • 一种单键开关机电路图
  • 设计模式2、抽象工厂模式 Abstract Factory
  • C++ 32盏灯,利用进制和 与 或 进行设计
  • Ffmpeg-(1)-安装:ubuntu系统安装Ffmpeg应用
  • 系统集成|第十一章(笔记)
  • 二叉树题目:二叉树剪枝
  • JAVA中使用CompletableFuture进行异步编程
  • uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口
  • Lambda表达式常见用法(提高效率神器)
  • 2023旷视自驾感知算法暑期实习一面
  • Python3 如何实现 websocket 服务?
  • SQLAlchemy常用数据类型
  • Vue路由与nodejs下载安装及环境变量的配置