11.3设计模式-新
一、设计模式概述一模式层次体系架构模式软件设计中的高层决策如C/S结构、B/S结构反映系统整体分布方案特点是看到名称即可理解系统分布方式客户端/服务器、浏览器/服务器。设计模式中间层解决方案描述重复发生问题的核心解法包含23种标准模式具备四要素模式名称、问题描述、解决方案、实施效果。惯用法与具体编程语言相关的最低层实现技巧如C的引用计数重点关注编码阶段的构件关系实现。二设计模式四要素名称标识每种模式的唯一命名如工厂方法。问题场景明确模式适用的具体问题情境。解决方案模式的核心设计思路和实现方式。效果评估应用该模式带来的优缺点和影响。三学习策略与考点分类记忆法优先记忆11种创建型和结构型模式剩余12种自动归为行为型模式。创建型典型工厂方法、抽象工厂、原型、单例、构建器。结构型典型适配器、桥接、组合、装饰、外观、享元、代理。三大考点模式分类归属高频考点。应用场景匹配给出描述选对应模式。类图识别常通过英文标签提示如组合模式标Composite。学习建议重点掌握定义和应用场景暂不深究类图细节。采用二八定律用20%时间掌握80%高频考点。考试后可延伸阅读《设计模式》专著深入理解。四模式分类总览创建型5种工厂方法、抽象工厂、原型、单例、构建器。结构型7种适配器、桥接、组合、装饰、外观、享元、代理。行为型11种职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者。记忆技巧创建型最少5种结构型次之7种其余均为行为型带下划线模式可同时作为类和对象模式使用。二、设计模式分类详解一创建型设计模式5种工厂方法模式定义定义一个创建对象的接口但由子类决定需要实例化哪一个类使得子类实例化过程推迟。记忆关键字子类决定实例化。讲解类似现实中的工厂用于创建对象与抽象工厂模式不同工厂方法模式通过一个工厂创建不同类型对象而非创建多个工厂。构建器模式定义将一个复杂类的表示与其构造相分离使得相同的构建过程能够得出不同的表示。记忆关键字类和构造分离。讲解适用于构造复杂对象如游戏角色将构造过程与表示分离可灵活组合对象特性如角色的身体、脸部、发型等。原型模式定义用原型实例指定创建对象的类型并且通过拷贝这个原型来创建新的对象。记忆关键字原型实例拷贝。讲解通过拷贝现有对象创建新对象类似编程中的代码复制粘贴新对象可在原型基础上修改以适应新需求。单例模式定义保证一个类只有一个实例并提供一个访问它的全局访问点。记忆关键字唯一实例。讲解确保某个类仅存在一个实例提供全局访问点常用于控制资源访问如数据库连接池。抽象工厂模式定义提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。记忆关键字一系列相关对象接口统一。讲解聚焦于创建“一组相关对象”与工厂方法模式的“单个对象创建”形成区别适用于需要统一管理相关对象创建的场景。二结构型设计模式7种适配器模式定义将一个类的接口转换成用户希望得到的另一种接口使原本不相容的接口得以协同工作。记忆关键字转换兼容接口。讲解类似现实中的电源适配器用于转换接口匹配不同设备编程中可通过定义新函数调用两个功能相似但接口不同的函数实现兼容。桥接模式定义将类的抽象部分和它的实现部分分离开来使它们可以独立的变化。记忆关键字抽象和实现分离。讲解分离抽象与实现使两者可独立变化例如将资料的载体纸质、电子和形式文字、图片分离组合出不同资料类型。组合模式定义将对象组合成树型结构以表示“整体-部分”的层次结构使得用户对单个对象和组合对象的使用具有一致性。记忆关键字整体-部分树形结构。讲解强调整体与部分的关系常用于表示树形结构如公司组织架构、文件系统方便统一处理整体和部分的操作。装饰模式定义动态的给一个对象添加一些额外的职责提供了用子类扩展功能的一个灵活的替代比派生一个子类更加灵活。记忆关键字附加职责。讲解允许运行时动态给对象添加职责无需通过继承扩展功能类似吃火锅时动态添加调料麻辣、牛肉等。外观模式定义定义一个高层接口为子系统中的一组接口提供一个一致的外观从而简化了该子系统的使用。记忆关键字对外统一接口。讲解通过高层接口简化子系统使用类似智能家居的家庭模式可通过统一接口控制多个电器设备。享元模式定义提供支持大量细粒度对象共享的有效方法。记忆关键字细粒度共享。讲解通过共享细粒度对象减少内存占用、提升性能常用于汉字输入法、语音识别等场景如共享常见汉字对象避免重复创建。代理模式定义为其他对象提供一种代理以控制这个对象的访问。记忆关键字代理控制。讲解通过代理对象控制对实际对象的访问类似桌面快捷方式可通过代理便捷访问软件无需直接操作软件本身。三行为型设计模式11种核心特征反映类和对象的行为及动态交互与创建型静态创建、结构型静态结构模式形成对比。记忆技巧记住创建型5种和结构型7种后剩余模式均属于行为型。职责链模式核心机制通过链式结构传递请求每个处理对象都有机会处理或传递给下一级。典型应用OA系统请假流程员工→部门主管→部门经理→总经理。优势降低发送者与接收者耦合度新增处理者只需修改链结构。记忆关键字传递请求、职责链接。命令模式核心特性将请求封装为独立命令对象支持撤销/重做操作。典型场景需要记录操作历史或实现“回退”功能的系统。实现要点命令对象需包含执行和撤销两个基本方法。记忆关键字可撤销、日志记录。解释器模式核心功能为特定语言定义文法规则和解释执行机制。典型应用游戏地图编辑器如红色警戒自定义规则。类比理解相当于实现一个专用虚拟机。记忆关键字解释器、虚拟机。迭代器模式核心价值提供统一接口遍历集合元素隐藏内部实现细节。典型应用各种集合类List/Set等的遍历操作。设计原则符合迪米特法则最少知识原则。记忆关键字顺序访问、不暴露内部。中介者模式核心思想通过中介对象集中管理对象间交互将网状结构转为星型结构。典型应用ESB企业服务总线、房产中介系统。优势降低对象间直接依赖交互逻辑集中管理。记忆关键字不直接引用、多对多转一对多。备忘录模式核心功能捕获并外部化对象状态支持状态恢复。典型场景游戏存档/读档、事务回滚。实现要点需保持封装性不暴露对象内部细节。记忆关键字保存和恢复、存档读档。观察者模式核心机制一对多依赖关系主题状态变化自动通知所有观察者。典型应用微信公众号订阅、事件监听系统。组件角色Subject被观察者、Observer观察者。记忆关键字通知、自动更新。状态模式核心思想将状态封装为独立类状态改变导致行为改变。典型应用会员等级系统普通/VIP会员不同权限。优势消除大量条件判断符合开闭原则。记忆关键字状态变成类、行为随状态变。策略模式核心价值封装可互换的算法族使算法独立于客户端。典型应用排序算法切换冒泡/快速/希尔排序。实现要点策略接口统一具体策略实现可替换。记忆关键字算法替换、封装变化。模板方法模式核心机制定义算法骨架具体步骤延迟到子类实现。典型应用框架设计中的钩子方法。优势代码复用保持算法结构不变。记忆关键字算法骨架、步骤延迟。访问者模式核心思想数据结构与操作分离便于新增操作。典型场景需频繁添加新操作但数据结构稳定的系统。类比理解人类固有属性不变但行为可变爬→走→飞。记忆关键字数据和操作分离、操作可扩展。三、考试真题解析一例题1设计模式的分类与定义题目解析抽象工厂模式创建型模式提供创建一系列相关或相互依赖对象的接口无需指定具体类。桥接模式Bridge结构型模式将类的抽象部分与实现部分分离使两者可独立变化。命令模式Command行为型模式将请求封装为对象支持参数化请求、排队、日志记录及撤销操作。答案(54)D; (55)A; (56)B; (57)A二例题2桥接模式在绘图软件中的应用题目解析设计模式桥接模式用于分离抽象部分与实现部分使两者可独立变化。定义实现类接口本例中Shape定义了实现类接口用于绘制不同图形。适用情况不希望在抽象和它的实现部分之间有固定判定关系的场景。模式类型桥接模式属于结构型模式具体为结构型对象模式。答案C; A; A; B解题技巧结合桥接模式的定义和特点区分结构型、创建型、行为型模式的差异即可准确作答。四、知识小结知识点核心内容考试重点/易混淆点难度系数面向对象技术基本概念、开发过程、UML图、关系、设计模式设计模式的分类、定义、应用场景中设计模式概述系统模式分为三层架构模式、设计模式、惯用法三层模式的区别与联系低设计模式分类创建型、结构型、行为型三大类设计模式的区分中创建型设计模式抽象工厂、工厂方法、构建器、原型、单例每种模式的定义、应用场景、英文对照中结构型设计模式适配器、桥接、组合、装饰、外观、享元、代理每种模式的定义、应用场景、英文对照中行为型设计模式职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者每种模式的定义、应用场景、英文对照高设计模式学习方法掌握定义、关键字、应用场景理解图形图形记忆与理解中考试策略重点掌握分类、定义、应用场景图形题较少分类与定义的区分低课后建议重点巩固高频考点模式分类、应用场景匹配通过习题加深理解总结每种模式的“定义记忆关键字典型应用”便于快速记忆类图识别题重点关注英文标签结合模式核心特征判断考试后可延伸阅读《设计模式》专著深入理解模式的实现细节。