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

《软件设计师》复习笔记(14.3)——设计模式

目录

一、设计模式分类

1. 创建型模式(Creational Patterns)

2. 结构型模式(Structural Patterns)

3. 行为型模式(Behavioral Patterns)

真题示例: 


一、设计模式分类

  1. 架构模式
    • 高层设计决策(如C/S结构)。
  2. 设计模式
    • 解决重复发生的问题,提供可复用的解决方案。
    • 四要素:模式名称、问题、解决方案、效果。
  3. 惯用法
    • 与编程语言相关的底层模式(如C++的引用计数)。

1. 创建型模式(Creational Patterns)

模式名称(中文)模式名称(英文)定义记忆关键字
抽象工厂模式Abstract Factory提供一个接口,创建一系列相关或相互依赖的对象,无需指定具体类抽象接口
建造者模式Builder将复杂类的表示与构造分离,使相同构建过程能得出不同表示类和构造分离
工厂方法模式Factory Method定义创建对象的接口,由子类决定实例化哪个类(延迟子类实例化)子类决定实例化
原型模式Prototype用原型实例指定创建对象的类型,并通过拷贝创建新对象原型实例,拷贝
单例模式Singleton保证一个类仅有一个实例,并提供全局访问点唯一实例

2. 结构型模式(Structural Patterns)

模式名称(中文)模式名称(英文)定义记忆关键字
适配器模式Adapter将一个类的接口转换成用户希望的另一种接口,使不兼容的接口协同工作转换,兼容接口
桥接模式Bridge将抽象部分与实现部分分离,使它们能独立变化抽象和实现分离
组合模式Composite将对象组合成树形结构表示“整体-部分”层次,用户可一致使用单个/组合对象整体-部分,树形结构
装饰模式Decorator动态地给对象添加额外职责,比继承更灵活附加职责
外观模式Facade为子系统提供统一的高层接口,简化使用对外统一接口
享元模式Flyweight支持大量细粒度对象的共享细粒度,共享
代理模式Proxy为其他对象提供代理以控制访问代理控制

3. 行为型模式(Behavioral Patterns)

模式名称(中文)模式名称(英文)定义记忆关键字
职责链模式Chain of Responsibility通过链式传递请求,减少发送者与接收者耦合,直到有对象处理请求职责链,传递请求
命令模式Command将请求封装为对象,支持参数化、队列、日志和撤销操作日志记录,可撤销
解释器模式Interpreter定义语言的文法表示,并创建解释器来解释句子解释器,虚拟机
迭代器模式Iterator提供顺序访问聚合对象元素的方法,无需暴露内部结构顺序访问,不暴露内部
中介者模式Mediator封装对象间交互,降低耦合,使交互可独立变化不直接引用
备忘录模式Memento在不破坏封装的前提下保存对象状态,后续可恢复保存,恢复
观察者模式Observer定义一对多依赖关系,当对象状态变化时自动通知所有依赖对象通知,自动更新
状态模式State允许对象在内部状态改变时改变行为状态变成类
策略模式Strategy封装一系列算法,使其可互相替换,独立于用户变化算法替换
模板方法模式Template Method定义算法骨架,将某些步骤延迟到子类实现子类重定义步骤
访问者模式Visitor在不改变元素类的前提下定义作用于元素的新操作数据和操作分离

真题示例: 

设计模式描述了一个出现在特定设计语境中的设计再现问题,并为它的解决方案提供了一个经过充分验证的通用方案,不同的设计模式关注解决不同的问题。例如,抽象工厂模式提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类,它是一种(54)模式;(55)模式将类的抽象部分和它的实现部分分离出来,使它们可以独立变化,它属于(56)模式;(57)模式将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

(54)A.组合型 B.结构型 C.行为型 D.创建型

(55)A.Bridge B.Proxy C.Prototype D.Adapter

(56)A.组合型 B.结构型 C.行为型 D.创建型

(57)A.Command B.Facade C.Memento D.Visitor

  • 创建型模式主要用于创建对象,抽象工厂模式提供一个接口来创建一系列相关或相互依赖的对象,属于创建型模式。创建型模式关注点在于对象的创建过程和方式,比如单例模式保证一个类仅有一个实例等。
  • Bridge(桥接)模式将类的抽象部分和它的实现部分分离,使它们可以独立变化 。例如在图形绘制系统中,抽象的图形(如圆形、矩形等)和具体的绘制实现(如基于不同绘图库的绘制)可以分别进行扩展和修改。
  • 桥接模式属于结构型模式。结构型模式主要用于处理类或对象的组合,研究如何将类或者对象结合在一起形成更大的结构,比如代理模式、组合模式等也都是结构型模式。
  • Command(命令)模式将一个请求封装为一个对象,这样可以用不同的请求对客户进行参数化,还能将请求排队或记录请求日志,支持可撤销的操作。比如在文本编辑器中,“撤销”操作就可以用命令模式实现,将每次的编辑操作封装成命令对象。

欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用( )模式将抽象部分与其实现部分分离,使它们都可以独立的变化。其中( )定义了实现类接口,该模式适用于( )的情况,该模式属于( )模式。

A、适配器(adapter) B、装饰(Decorator) C、桥接(Bridge) D、组合(composite)

A、Shape B、Circle和Rectangle C、V1Drawing和V2Drawing D、Drawing

A、不希望在抽象和它的实现部分之间有一个固定判定关系

B、想表示对象的部分 - 整体层次结构.

C、想使用一个已经存在的类,而它的接口不符合要求

D、在不影响其他对象的情况下,以动态透明的方式给单个对象添加职责

A、创建型对象 B、结构型对象 C、行为型对象 D、结构型类

  • 从类图中可以看出,Shape类代表图形的抽象部分,Drawing类及其子类(V1Drawing、V2Drawing)代表绘制的实现部分,通过将两者分离,使得图形和绘制方式都可以独立变化,符合桥接模式的特点。
  • Drawing类中定义了tdrawLine()和tdrawCircle()等方法,为具体的绘制实现类(V1Drawing、V2Drawing)提供了接口规范,这些具体类需要实现这些方法来完成实际的绘制操作。
  • 桥接模式适用于抽象和实现可以独立发展变化的场景,绘图软件中图形种类和绘图程序都可能不断扩充,即不希望图形抽象和绘制实现之间有固定的绑定关系。
  • 桥接模式是结构型模式,它主要处理对象之间的结构关系,属于结构型对象模式,通过将对象的抽象和实现分离来构建灵活的软件结构。

相关文章:

  • Android12 ServiceManager::addService源码解读
  • Django 结合 Vue 实现简单管理系统的详解
  • JDBC 与 MyBatis 详解:从基础到实践
  • 7、生命周期:魔法的呼吸节奏——React 19 新版钩子
  • Qt 入门 5 之其他窗口部件
  • webgl入门实例-11WebGL 视图矩阵 (View Matrix)基本概念
  • 6.6 “3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化“
  • [Unity]-[UI]-[Prefab] 关于UGUI UI Prefab的制作技巧
  • 数据结构——顺序表(C语言实现)
  • 论文阅读:2024 arxiv AI Safety in Generative AI Large Language Models: A Survey
  • Odoo:免费开源的轧制品行业管理软件
  • Python 项目文档编写全攻略:从入门到自动化维护
  • PLM系统如何支持利益相关者分析?沟通矩阵设计
  • .NET Core 服务实现监控可观测性最佳实践
  • C#/.NET/.NET Core拾遗补漏合集(25年4月更新)
  • 在国产麒麟Kylin Linux Advanced Server V10中使用QT5开发环境并支持中文输入
  • HarmonyOs学习 环境配置后 实验1:创建项目Hello World
  • 第八篇:系统分析师第三遍——3、4章
  • UE5编辑器静止状态下(非 Play 模式)睫毛和眼睛的渲染是正常的,而在 Play 模式下出现模糊
  • 回顾与动机 - 为什么我们需要 Transformer
  • 对话地铁读书人|来自法学教授的科普:读书日也是版权日
  • 一场小型越野赛为何吸引众多越野大神打卡?
  • 同比增长4.2%!一季度全国财政支出持续增长
  • 卡洛·金茨堡:女巫与萨满——我的学术之路
  • 九部门:将符合条件的家政从业人员纳入公租房等保障范围
  • 北京将严查大数据杀熟和强制搭售等五种网络销售违法行为