系统架构师2026真题:创建型模式怎么一眼选出Singleton

四季读书网 2 0
系统架构师2026真题:创建型模式怎么一眼选出Singleton

复习设计模式时,很多同学会把二十多个英文名放进一张表里背。到了考场看到 Singleton 、 Adapter 、 Observer 、 Decorator 四个都眼熟,反而开始凭印象猜:名字像“单例”,是不是因为“全局访问”而算结构型?如果这一步靠记忆碎片,很容易把分丢在最基础的分类题上。

这题真正考的不是你能不能背出某个模式的定义,而是:看到模式名时,能否先判断它解决的是“对象怎么产生”“对象怎么拼起来”,还是“对象之间怎么协作”。把判断入口换对,四个选项不必逐个硬背。

真题直读

一句话结论:题干问“对象如何被创建”,优先在创建型模式中找; Singleton 负责控制实例的产生,因此选 A 。

题目:下列设计模式中,属于创建型模式的是( )。

选项:

A. Singleton
B. Adapter
C. Observer
D. Decorator

答案: A

解析: GoF 的 23 种设计模式分为创建型、结构型和行为型三类。创建型共 5 种,关注对象如何创建,包括 Singleton 、 Factory Method 、 Abstract Factory 、 Builder 、 Prototype ;结构型共 7 种,关注对象组合,包括 Adapter 、 Bridge 、 Composite 、 Decorator 、 Facade 、 Flyweight 、 Proxy ;行为型共 11 种,关注对象交互,包括 Observer 、 Strategy 、 Command 、 Iterator 、 State 、 Template Method 等。 Singleton 用于确保一个类只有一个实例并提供全局访问点,属于创建型。

考点讲透

考场语言里,创建型不是“代码里写了 new 就叫创建型”,而是“这个模式专门规定对象怎样被创建、由谁创建、创建多少个”。 Singleton 的核心动作是限制一个类只能产生一个实例,并给外部一个统一访问入口;它直接处理的是实例数量与取得实例的方式,所以归到创建型。

本题的关键信号是“创建型”。先别被 Singleton 的“全局访问点”带偏:访问点只是让外部取得那一个实例的方式,决定类别的是它先控制了实例的创建和唯一性。反过来,若题干问的是既有对象如何适配、包装或组合,才要把注意力转向结构型。

遇到模式分类题,用三步即可压缩判断时间:

1.先问题目要解决什么:产生对象、组织对象,还是协调对象行为。
2.再抓模式的主动作: Singleton 限制实例; Adapter 转换接口; Decorator 叠加职责; Observer 通知订阅者。
3.用类别回验主动作:限制或构造实例是创建型,接口与组合关系是结构型,通知与协作流程是行为型。

这里有个边界要卡住: Decorator 也可能在运行时“新增功能”,但它不是在规定对象如何诞生,而是在不改原对象接口的前提下,用包装对象扩展职责。因此“能创建一个包装对象”不等于创建型。

为什么容易错

B 的 Adapter 最容易被“改造”二字联想误导。它要解决的是两个既有接口不兼容的问题,把一个接口转换成客户期望的接口;这是接口适配,属于结构关系,不是决定实例怎样产生。这是典型的关键词联想错误:看到“转换”却没有问“转换的对象关系是什么”。

C 的 Observer 误导性来自“一个对象带动多个对象”。但它的主线是主题状态变化后通知多个观察者,考的是对象之间的消息依赖与协作流程,属于行为型。把“一个影响多个”理解成“创建多个”,就是把因果过程错当成对象产生过程。

D 的 Decorator 常被误选,是因为它看起来像给对象“加了一层”。这层确实是新对象,却服务于包装与职责叠加:在保持相同接口的情况下灵活扩展功能。它的考点是组合结构,不是实例控制,属于结构型。这是范围错配——只盯着“新建”,忽略了模式解决问题的主目标。

所以别把分类题做成英文名配对。每个选项先翻译成一句动词短语:限制实例、转换接口、通知观察者、包装职责;类别往往就出来了。

相关内容展开

这一题还能迁移到两个相邻陷阱。第一, Factory Method 、 Abstract Factory 、 Builder 、 Prototype 与 Singleton 都是创建型,但它们关注点不同:工厂把“由哪个具体类创建”交给工厂方法或工厂族;建造者把复杂对象按步骤装配;原型通过复制已有对象得到新对象;单例只强调“唯一实例”。下次题干出现“产品族”“分步骤构造”“复制对象”,不要机械选 Singleton ,要看它究竟在考哪一种创建决策。

第二, Adapter 与 Decorator 都常以“再包一层”的外观出现。判断时看外部接口是否改变:为了让原本不兼容的接口能被调用,是 Adapter ;接口保持不变、只是附加职责,是 Decorator 。再加一个对照: Observer 不包接口,而是建立通知关系。这样遇到陌生场景,也能从“创建、结构、行为”三条主线排除。

临考速记

把三类模式先记成三句问话:

创建型:对象从哪里来、怎么来、来几个?
结构型:对象和接口怎么接、怎么拼、怎么扩?
行为型:对象之间谁通知谁、谁负责流程?

本题四项可压成: Singleton 管“一个实例”; Adapter 管“接口能接上”; Observer 管“状态变化要通知”; Decorator 管“功能往外叠”。题干问创建,就先锁定第一句。

想把这种“先看主动作、再判类别”的反应练成考场习惯,可以到小欢软考练几道设计模式真题:每做完一题,都给正确项和干扰项各写一句“它到底在解决什么”。

     点击卡片进入小程序练习   

抱歉,评论功能暂时关闭!