首页 > 其他分享 >软构学习笔记-工厂模式

软构学习笔记-工厂模式

时间:2023-04-18 19:11:06浏览次数:28  
标签:对象 创建 软构 接口 创建对象 模式 工厂 笔记

三个工厂模式方法

目录

Introduction

工厂模式属于设计模式中创造型模式的一种。
它提供了一种创建对象的方式,将创建对象的过程作了优秀的封装。
使得创建对象的创建逻辑不会暴露给客户端,而是通过接口来进行对象的创建。

简单工厂模式

定义:
定义一个工厂类,根据传入的参数不同返回不同类型的实例,被创建的实例具有共同的父类或者接口。
适用场景:
由于简单工厂模式只有一个工厂类,因此工厂中创建的对象不能太多,否则会造成业务逻辑的复杂。
特点:

  • 一个工厂
  • 对具有共同父类或接口,但实现不尽相同对象进行创建。
  • 根据传入的参数指定创建对象的类型。

工厂方法模式

工厂方法模式相当于是对简单工厂的进一步深化。
与简单工厂模式不同的事,在工厂模式方法中,我们为不同的对象提供不同的工厂,而不是使用一个同意的工厂类。即每个对象都有与之对应的工厂。

定义:
定义一个用于创建不同工厂的工厂接口,通过实例化不同的对象工厂,(再通过该对象工厂)创建对应对象。
特点:

  • 有一个创建不同对象工厂的工厂接口
  • 各对象工厂实现工厂接口方法来创建指定对象

抽象工厂模式

抽象工厂模式进一步深化了工厂方法,在该模式中,工厂类不仅可以创建一个对象,而且能创建一组对象。

定义:
提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。( 在抽象工厂模式中,每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的对象)
特点:

  • 工厂不局限于创建一个产品,而是提供一个产品族中的特定产品。
  • 工厂接口衍生不同产品族的工厂类

标签:对象,创建,软构,接口,创建对象,模式,工厂,笔记
From: https://www.cnblogs.com/blogstb/p/17327662.html

相关文章

  • 0001笔记【并行计算】CUDA在现代C++中如何运用?看这一个就够了
    目录SM(流多处理器)和板块(block)一个板块会被调度到一个SM上,直到执行结束常用函数cudaMalloc在显存上分配内存cudaMallocHost在主存上分配锁页内存cudaMemcpy在主存和显存之间拷贝数据cudaMallocManagerd统一内存优化时间依赖和空间依赖线程太多不行:防止寄存器打翻(registerspill)......
  • log4j笔记之Category
    org.apache.log4j.CategoryThisclasshasbeendeprecatedandreplacedbytheLoggersubclass.Itwillbekeptaroundtopreservebackwardcompatibilityuntilmid2003.这个类已经被废弃并且被Logger的子类代替。它将将保留为了保持向后兼容性,直到2003年中期。 Logger......
  • 高等数学笔记一
    数学基础知识目录数学基础知识高等数学线性代数行列式矩阵向量线性方程组矩阵的特征值和特征向量二次型概率论和数理统计随机事件和概率随机变量及其概率分布多维随机变量及其分布随机变量的数字特征数理统计的基本概念数据科学需要一定的数学基础,但仅仅做应用的话,如果时间不多,......
  • 查看 WINDOWS 11 笔记本电池容量方法
    大多人都有笔记本续航焦虑,随着笔记本的使用时间,电池容量也会有损耗。如果你想知道笔记本电池还剩余多少容量,可以通过用管理员身份运行终端,然后输入下面的命令:powercfg /batteryreport /output "C:\battery.html"回车命令后,就会在C盘根目录生成 battery.html电池报告......
  • 图扑数字孪生工厂合集 | 智慧工厂可视化,推动行业数字化转型
    前言图扑软件基于HTML5(Canvas/WebGL/WebVR)标准的Web技术,满足了工业物联网跨平台云端化部署实施的需求,以低代码的形式自由构建三维数字孪生、大屏可视化、工业组态等等。从SDK组件库,到2D和3D编辑,到属性修改,构成了一站式的数据可视化解决方案、形成了一整套实践证明的高效开......
  • ansible权威指南笔记(四)—— roles的用法
    一、roles简介自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等,只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并通过include调用......
  • 代码大全阅读笔记1
    第5章:软件构建中的设计5.1设计中的挑战设计是一个险恶的问题;设计是个了无章法的过程=>直到你没时间做了为止。设计就是确定取舍和调整顺序的过程。设计受诸多限制。设计是不确定的。设计是一个启发式过程。设计是自然而然形成的。几乎所有的系统都在其开发的起始阶......
  • SpringBoot学习笔记
    一、Springboot简介目的:设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序和SpringBoot程序对比SpringBoot项目快速启动对SpringBoot项目打包(执行Maven构建指令package)执行启动命令(cmd中)java-jarspringboot.jar注:jar支持命令行启动需要依赖maven......
  • 动力节点2023最新MybatisPlus学习笔记(一)入门篇
    MyBatis是很火的框架,一般的项目都是基于ssm,虽然mybatis可以直接在xml中通过SQL语句操作数据库,很灵活,但其操作都要通过SQL语句进行,就必须写大量的xml文件,非常麻烦。而MyBatis-Plus可以很好的解决了这个问题,比Mybatis简单太多了,不用搞那么多xml文件的配置,直接与Springboot整合,开发效......
  • 动力节点2023最新MybatisPlus学习笔记(二)基础篇
    2【基础篇】2.1通用Mapper接口介绍有关于通用Mapper接口,之前我们已经看到了,我们自己编写的Mapper接口继承自BaseMapper接口,由BaseMapper接口提供了很多单表的增删改查相关的操作方法,在入门案例中,我们测试了查询所有的操作。在这一章节,我们介绍一些简单的Mapper接口中的方法,主要......