设计模式就像生活中的智慧妙招,每种都有独特的解决问题思路。通过生活实例比喻设计模式,再结合软考真题,能帮我们轻松分清 23 种设计模式,快速从题目中找到关键线索锁定答案。
一、创建型模式(Creational Patterns)
1. 单例模式Singleton
比喻:班级唯一的班长,整个班级只有一个班长管理事务。
标志性词语:唯一、全局访问
软考分析:题目中出现 “系统中只有一个实例”“全局唯一” 等表述,就可判断为单例模式。
例如,某系统需要一个全局的配置管理器,且整个系统只有一个实例,这就是单例模式的应用场景。
2. 工厂模式Factory Method
比喻:面包工厂,根据订单生产不同种类的面包,用户不用知道具体制作过程。
标志性词语:创建不同对象、根据条件生成
软考分析:当题目出现 “根据不同条件创建不同对象”“对象创建过程封装” 等内容时,如 “根据用户输入的类型创建不同的图形对象”,大概率是工厂模式。
3. 抽象工厂模式Abstract Factory
比喻:家具制造集团,旗下有沙发厂、桌椅厂,可统一生产不同风格的家具套件。
标志性词语:创建对象家族、产品系列
软考分析:题目中提到 “创建一系列相关对象”“不同产品族的对象创建”,
比如 “创建不同风格(现代、古典)的家具组合”,就是抽象工厂模式。
4. 建造者模式(生成器模式) Builder
比喻:组装电脑,通过不同的硬件配置(CPU、显卡等)组装出满足不同需求的电脑。
标志性词语:复杂对象构建、分步组装
软考分析:若题目描述 “将复杂对象的构建过程和表示分离”“分步创建对象”,
像 “通过不同步骤创建游戏角色,包括选择职业、外观定制等”,则是建造者模式。
5. 原型模式Prototype
比喻:复印文件,通过已有的文件快速复制出多个相同文件。
标志性词语:复制对象、克隆
软考分析:当看到 “通过已有对象创建新对象”“对象克隆” 等表述,
如 “在游戏中复制 NPC 角色”,就是原型模式。
二、结构型模式(Structural Patterns)
1. 代理模式Proxy
比喻:房产中介,代替房东出租房屋,租客通过中介了解房源信息。
标志性词语:代替、中介
软考分析:题目中出现 “代表其他对象执行操作”“中介角色” 等,
比如 “远程访问对象时通过代理对象处理网络请求”,可判断为代理模式。
2. 适配器模式Adapter
比喻:电源转换插头,将不同国家标准的插头转换适配,使其能正常使用。
标志性词语:转换、适配
软考分析:若有 “使不兼容的接口协同工作”“接口转换” 的描述,
像 “将旧系统接口适配到新系统中”,就是适配器模式。
3. 桥接模式Bridge
比喻:手机品牌与操作系统,不同品牌手机(华为、苹果)可搭载不同操作系统(安卓、iOS),相互独立又可组合。
标志性词语:分离、抽象与实现解耦
软考分析:题目提到 “将抽象部分与实现部分分离”“两个维度独立变化”,
例如 “设计图形绘制系统,使图形类型和绘制平台分离”,是桥接模式。
4. 装饰模式Decorator
比喻:给蛋糕加装饰,在原本蛋糕基础上添加奶油、水果等,不改变蛋糕本质但增加新功能。
标志性词语:动态添加功能、不改变原有结构
软考分析:当出现 “在不修改原有类的情况下增加功能”“动态扩展对象功能”,
如 “为文本框添加边框、提示信息等功能”,就是装饰模式。
5. 外观模式Facade
比喻:智能家居控制面板,一个面板可控制灯光、空调、窗帘等多个设备,简化操作。
标志性词语:统一接口、简化操作
软考分析:题目中 “为子系统提供统一接口”“简化复杂操作” 的表述,
像 “通过一个接口管理多个数据库操作”,就是外观模式。
6. 享元模式Flyweight
比喻:共享图书馆的书籍,多个人可以借阅同一本书,减少资源重复。
标志性词语:共享对象、减少资源占用
软考分析:若出现 “共享对象以减少内存占用”“复用对象实例”,
比如 “游戏中大量相同的小兵角色共享同一对象实例”,就是享元模式。
7. 组合模式Composite
比喻:公司组织架构,由部门(组合对象)和员工(叶子对象)组成,可统一管理。
标志性词语:整体与部分、树形结构
软考分析:题目描述 “表示对象的部分 - 整体层次结构”“树形结构管理对象”,
如 “文件系统目录与文件的管理”,是组合模式。
三、行为型模式(Behavioral Patterns)
1. 策略模式Strategy
比喻:出行方式选择,根据不同情况(距离、时间、预算)选择不同出行方式(打车、公交、步行)。
标志性词语:多种算法、动态切换
软考分析:当看到 “定义一系列算法,可相互替换”“根据条件选择不同策略”,
如 “购物车根据不同促销活动(满减、打折)计算价格”,就是策略模式。
2. 模板方法模式Template Method
比喻:写论文模板,确定论文的整体框架(摘要、正文、结论),具体内容由作者填充。
标志性词语:固定流程、部分步骤可定制
软考分析:题目中 “定义算法骨架,部分步骤由子类实现”“公共流程固定,细节可变”,像 “定义考试流程模板,具体考试科目内容由不同科目类实现”,是模板方法模式。
3. 观察者模式Observer
比喻:订阅公众号,用户订阅后,公众号发布新内容会推送给所有订阅用户。
标志性词语:发布 - 订阅、状态变化通知
软考分析:若有 “对象间存在依赖关系,状态变化时通知其他对象”“订阅 - 通知机制” 的描述,如 “股票价格变化时通知所有关注的投资者”,就是观察者模式。
4. 迭代器模式Iterator
比喻:翻看相册,通过相册的翻页操作依次查看每张照片。
标志性词语:遍历、顺序访问
软考分析:当出现 “提供一种方法顺序访问聚合对象中的元素”“不暴露聚合对象内部结构进行遍历”,比如 “遍历数组中的元素”,就是迭代器模式。
5. 责任链模式Chain of Responsibility
比喻:请假审批流程,员工请假需依次经过组长、部门经理、总经理审批。
标志性词语:请求传递、链式处理
软考分析:题目中 “请求沿着处理对象链传递”“多个对象处理请求” 的表述,
如 “订单审批流程,根据订单金额由不同人员审批”,是责任链模式。
6. 命令模式Command
比喻:遥控器控制家电,按下遥控器按钮(命令),家电执行相应操作(打开、关闭)。
标志性词语:命令封装、请求与执行分离
软考分析:若出现 “将请求封装为对象”“解耦请求发送者和接收者”,
像 “游戏中玩家操作(攻击、跳跃)封装为命令对象执行”,就是命令模式。
7. 备忘录模式Memento
比喻:电脑系统备份,保存系统当前状态,以便出现问题时恢复到之前状态。
标志性词语:状态保存、恢复
软考分析:当看到 “保存对象的历史状态”“恢复对象到某个历史状态”,
如 “文本编辑器的撤销操作,保存之前的文本状态”,就是备忘录模式。
8. 状态模式State
比喻:自动售货机,根据不同状态(有货、无货、投币中)执行不同操作。
标志性词语:状态变化、行为改变
软考分析:题目中 “对象行为随状态改变而改变”“状态驱动行为” 的描述,
如 “电梯根据不同状态(运行、停止、检修)执行不同操作”,是状态模式。
9. 访问者模式Visitor
比喻:税务人员检查企业账目,不同税务人员(访问者)对企业账目(元素对象)进行不同检查操作。
标志性词语:对象结构与操作分离、不同操作
软考分析:若有 “在不修改对象结构的前提下增加新操作”“对对象结构中的元素进行不同操作”,
像 “不同报表生成器(访问者)对数据对象(元素)生成不同报表”,就是访问者模式。
10. 中介者模式Mediator
比喻:房产交易平台,买卖双方通过平台进行沟通交易,避免直接交互。
标志性词语:中介、解耦对象交互
软考分析:当出现 “用一个中介对象封装对象间的交互”“降低对象间耦合度”,
如 “聊天系统中,用户通过服务器(中介者)进行消息交互”,就是中介者模式。
11. 解释器模式Interpreter
比喻:翻译软件,将输入的语言(如英文)按照语法规则翻译成另一种语言(如中文)。
标志性词语:解释、语法规则
软考分析:题目中 “给定语言的文法表示,并定义一个解释器来解释语言中的句子”“语法解析” 的表述,
如 “实现一个简单的数学表达式解析器”,是解释器模式。
通过这些生活实例比喻和软考真题分析,希望你能更清晰地分清 23 种设计模式,在软考及实际开发中快速识别并运用。