欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 《软件设计师》复习笔记(14.3)——设计模式

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

2025/4/30 2:27:43 来源:https://blog.csdn.net/m0_73631172/article/details/147338726  浏览:    关键词:《软件设计师》复习笔记(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)提供了接口规范,这些具体类需要实现这些方法来完成实际的绘制操作。
  • 桥接模式适用于抽象和实现可以独立发展变化的场景,绘图软件中图形种类和绘图程序都可能不断扩充,即不希望图形抽象和绘制实现之间有固定的绑定关系。
  • 桥接模式是结构型模式,它主要处理对象之间的结构关系,属于结构型对象模式,通过将对象的抽象和实现分离来构建灵活的软件结构。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词