软件设计师备考笔记【day2】-UML 图解 | 面向对象 | 设计模式
目录一uml建模1基础概念2 UML 核心图分类3关系二面向对象1三大核心特性2设计原则三设计模式1模式分类总览2创建型模式3结构型模式4行为型模式一uml建模1基础概念1uml包括构造块规则通用关系2构造块包括事务关系图3事务包括结构事务静态概念和物理元素行为事务时间和空间分组事务组织架构文件夹注释事务2 UML 核心图分类图类型所属分类核心用途关键知识点用例图行为型描述系统功能需求参与者与用例的交互识别参与者、用例用例间关系包含、扩展、泛化的区别类图结构型描述系统中类、接口及其关系类间关系辨析类的属性 / 方法可见性时序图序列图行为型描述对象间的交互时序按时间顺序排列消息消息类型同步 / 异步 / 返回对象生命线、激活期循环 / 分支表示活动图行为型描述业务流程、算法逻辑、控制流起始 / 终止节点、分支节点、合并节点、泳道划分职责状态图行为型描述对象的生命周期状态间的转换初态 / 终态、状态转换条件、事件驱动转换区分状态图与活动图3关系参与者之间的关系泛化关系参与者和用例之间关联关系用例之间包含扩展泛化关系类型核心含义图示典型场景依赖临时的、弱的使用关系-----------虚线 箭头A 类的方法使用了 B 类对象作为参数关联长期的、稳定的引用关系————实线 箭头学生与课程员工与部门聚合整体 - 部分关系部分可脱离整体存在◇————空心菱形实线菱形在整体汽车和轮胎班级和学生组合整体 - 部分关系部分不能脱离整体存在◆————实心菱形实线菱形在整体人体和心脏树和树叶泛化继承关系子类继承父类————△实线 空心三角指向父类猫 / 狗继承动物类实现类实现接口接口定义方法类完成具体逻辑------------△虚线 空心三角指向接口实现 Runnable 接口、实现自定义接口二面向对象1三大核心特性封装继承多肽2设计原则原则名称核心思想目标单一职责 (SRP)一个类只负责一项职责降低类的复杂度提高可读性和可维护性开闭原则 (OCP)对扩展开放对修改关闭提高系统的可扩展性和灵活性里氏替换 (LSP)子类可以替换父类确保继承关系的正确性增强程序的健壮性接口隔离 (ISP)使用多个专用接口降低系统耦合提高内聚性依赖倒置 (DIP)依赖抽象不依赖具体降低模块间耦合提高系统稳定性合成复用 (CRP)优先组合其次继承降低耦合更灵活地复用代码迪米特法则 (LOD)最少知道最少依赖降低类之间的耦合度所有设计原则最终目标提高内聚、降低耦合符合开闭原则三设计模式1模式分类总览创建型模式解决对象创建问题隐藏创建细节提高灵活性。结构型模式解决类 / 对象的组合问题通过组合实现新功能。行为型模式解决对象间的交互与职责分配问题。2创建型模式模式核心思想关键考点 应用场景单例模式保证一个类仅有一个实例并提供全局访问点应用场景配置类、连接池、日志类实现方式饿汉式线程安全、懒汉式需双重检查锁工厂方法模式定义创建对象的接口让子类决定实例化哪个类核心一个工厂对应一个产品解决简单工厂的 “开闭原则” 问题抽象工厂模式提供创建一系列相关 / 依赖对象的接口核心一个工厂对应一组产品族适合多系列产品的场景如不同操作系统的按钮 / 文本框简单工厂非标准模式由一个工厂类根据参数创建不同产品对象软考常考辨析违反开闭原则适合产品少且稳定的场景3结构型模式模式核心思想关键考点 应用场景适配器模式将一个类的接口转换成客户期望的另一个接口解决接口不兼容问题分为类适配器继承和对象适配器组合应用场景旧系统与新接口的兼容、第三方库适配装饰器模式动态给对象添加额外职责比继承更灵活核心装饰器与被装饰者实现同一接口包含被装饰者对象应用场景IO 流、动态添加功能如日志、权限代理模式为其他对象提供一个代理控制对该对象的访问分为静态代理、动态代理应用场景远程代理RPC、虚拟代理图片加载、保护代理权限控制桥接模式将抽象与实现分离使两者可以独立变化核心组合代替继承解决多维度变化的类爆炸问题应用场景不同品牌 不同类型的设备如不同品牌的手机 不同系统4行为型模式模式核心思想关键考点 应用场景观察者模式定义对象间的一对多依赖当一个对象状态改变时所有依赖它的对象都会收到通知并自动更新核心主题被观察者和观察者的分离应用场景事件通知系统、消息订阅如消息队列、UI 事件监听策略模式定义一系列算法将每个算法封装成独立类使它们可以互相替换核心将算法与使用算法的客户端分离应用场景支付方式选择、排序算法切换、折扣策略模板方法模式定义一个算法的骨架将部分步骤延迟到子类实现核心父类定义算法流程子类实现具体步骤应用场景框架中的流程定义如 Spring 的模板方法、固定流程的业务逻辑状态模式允许对象在内部状态改变时改变它的行为对象看起来好像修改了它的类核心将状态与行为封装到状态类中避免大量 if-else 判断应用场景订单状态流转、游戏角色状态切换