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

软考76-上午题-【面向对象技术3-设计模式】-创建型设计模式01

一、创建型设计模式一览 

二、创建型设计模式

2-1、创建型设计模式的概念

一个类创建型模式使用继承改变被实例化的类;

一个对象创建型模式将实例化委托给另一个对象。

对应java的new一个对象。

2-2、简单工厂模式(静态工厂方法)

简单工厂模式属于创建型模式,但不属于23种设计模式之一

1、定义

定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

在简单工厂模式中用于被创建实例的方法通常为静态方法,因此简单工厂模式又被成为静态工厂方法。

简单工厂模式的三类角色:

1、工厂(核心):负责实现创建所有产品的内部逻辑,工厂类可以被外界直接调用,创建所需对象。

2、抽象产品:工厂类所创建的所有对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象。

3、具体产品:简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例。它要实现抽象产品中声明的抽象方法。

2、代码实现

简单工厂模式的问题:

若是要新增一个productC,则需要修改Factory类的代码。

违反了开放封闭原则。

开闭原则是指:

软件应该对扩展开放,而对修改关闭。这里的意思是在增加新功能的时候,能不改代码就尽量不要改,如果只增加代码就完成了新功能,那是最好的。

2-3、工厂方法模式

1、意图:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类

上午题喜欢考:意图,原话。

下午题喜欢考:代码填空。

2、代码实现

3、结构图(官方)

4、适用性

  • 当一个类不知道它所必须创建的对象的类的时候;
  • 当一个类希望由它的子类来指定它所创建的对象的时候;
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

上午题喜欢考。

2-4、抽象工厂模式

1、意图

提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

2、结构

一个具体的工厂可以创建多个具体的类。

3、代码实现

客户端:

4、适用性

  • 一个系统要独立于它的产品的创建、组合和表示时;
  • 个系统要由多个产品系列中的一个来配置时;
  • 当要强调一系列相关的产品对象的设计以便进行联合使用时;
  • 当提供一个产品类库,只想显示它们的接口而不是实现时。

2-5、真题

真题1:

一个具体的工厂只能创建一个具体的产品:工厂方法模式;

一个具体的工厂能创建多个具体的产品:抽象工厂方法模式;

真题2:

http://www.lryc.cn/news/321044.html

相关文章:

  • Matlab 双目相机标定(内置函数)
  • 【博客7.4】缤果Qt5_TWS串口调试助手V2.0 (高级篇)
  • CSS案例-4.padding导航栏练习
  • 5.1.4.2、【AI技术新纪元:Spring AI解码】Llama2 Chat
  • 后台发送GET/POST方法
  • 计算机考研|双非一战135上岸,408经验分享+复盘
  • 低代码与数字化工具:重塑软件开发的新范式
  • 如何使用 ArcGIS Pro 生成TIN
  • 你真的会做抖音小店吗?你做抖店的方法是正确的吗?教学分享
  • ssh免密登陆更换目标主机后无法连接
  • Java获取视频封面图,利用FFmpegFrameGrabber获取视频封面图
  • pycharm @NotNull parameter ‘module‘ of ...
  • Python使用pynput模块后台监控鼠标及按键
  • C语言 扫雷游戏
  • HTML学习:图片格式——超链接
  • 工业级5g路由器使用案例(5g智慧安防解决方案)
  • sentinel熔断降级
  • Redis的安装和部署教程(Windows环境)
  • MNN Session::resize 之流水线编码(五)
  • 2. IS-IS 基础实验
  • Rust 并行库 crossbeam 的 Channel 示例
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级的理解
  • springcloud gateway
  • JAVA八股day1
  • 探索拓展坞的奥秘:提升电脑接口的无限可能
  • Linux中执行脚本报错(脚本乱码问题)
  • el-table按钮获取当前行元素
  • MySQL数据导入的方式介绍
  • 构建部署_Docker常用命令
  • Spring Boot Actuator介绍