软件建模和设计模式
2021/7/13 6:09:20
本文主要是介绍软件建模和设计模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
软件建模
1. 软件建模的原则
- 选择正确的模型,模型要与现实相联系
- 从不同的视角,使用不同的模型去表示一个系统
- 外部视角
- 交互视角
- 结构化视角
- 行为视角
- 模型是抽象的
2. 软件建模方法
- 结构化方法
- 面向对象方法
- 基于构件方法
- 面向服务方法
- 面向方面方法
- 模型驱动方法
- 形式化方法
3. UML的特点
- 面向对象
- 可视化,表示能力强
- 独立于过程
- 独立于程序设计语言
- 易于掌握
4. UML内容组成
- 事物
- 结构事物
- 行为事物
- 组织事物
- 辅助事物
- 关系
- 关联
- 依赖
- 泛化
- 实现
- 图
- 静态
- 用例图:角色与用例之间的连接关系(包含、泛化、扩展),并描述系统在干什么
- 类图:类之间的关系: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
- 实现:类与接口的关系,表示类是接口所有特征和行为的实现
- ---- ⊳ \rhd ⊳
- 依赖:使用关系,有单向依赖和双向依赖,但避免使用双向依赖
- ---->
- 泛化:继承关系,指定了子类继承父类的所有特征和行为
- —— ⊳ \rhd ⊳
- 关联:拥有关系,使一个类知道另一个类的属性和方法
- ——>
- 聚合:整体与个体的关系,可以理解成把个体聚集在一起
- ⋄ \diamond ⋄——>
- 组合:整体与局部的关系,整体由局部组成
- ∙ \bullet ∙——>
- 实现:类与接口的关系,表示类是接口所有特征和行为的实现
- 对象图
- 组件图
- 部署图
- 动态
- 顺序图:参与者与对象之间有序的交互过程,强调消息是如何在对象之间发送和接收的。强调多个不同对象之间交互的先后顺序
- 顺序图将交互关系表示为一个二维图
- 纵向是时间轴,时间沿竖线向下延伸
- 横向轴代表了在协作中各独立对象的类元角色
- 类元角色用生命线表示
- 消息用从一个对象的生命线到另一个对象生命线的箭头表示
- 合作图
- 状态图:对象所有可能的状态,以及事件发生时状态的转移条件。强调复杂流程处理中活动单元的分支处理
- 状态:描述了一个类对象生命周期中的一个时间段
- 事件:发生在时间和而空间上的值得注意的事情
- 转换:处于此状态的对象对外界发生的事件所做出的反应
- 活动图:描述用例所要进行的活动,以及活动间的约束关系,有利于识别并行活动。强调特定对象在不同事件发生后的状态变化
- 活动
- 活动流
- 控制符
- 泳道
- 顺序图:参与者与对象之间有序的交互过程,强调消息是如何在对象之间发送和接收的。强调多个不同对象之间交互的先后顺序
- 静态
5. UML4+1 视图
- 逻辑视图(类图、对象图)
- 实现视图(组件图)
- 部署视图(部署图)
- 行为视图(顺序图、合作图、状态图、活动图)
- 用例视图(用例图)
6. UML模型在软件开发流程中的应用
- 需求分析(用例图)
- 概要设计(类图、对象图、合作图、状态图、顺序图、活动图)
- 详细设计(类图、对象图、合作图、状态图、顺序图、活动图)
- 编码设计
- 测试(类图、组件图、部署图)
设计原则和设计模式
1. 正交四原则
- 最小化重复
- 分离变化
- 缩小依赖范围
- 向稳定方向依赖
2. SOLID原则
- 单一职责
- 开闭原则:向扩展开放/向修改封闭
- 里氏替换原则:子类要能替换父类
- 接口分离原则:接口隔离/最小化接口依赖
- 依赖倒置原则:依赖倒置/只依赖接口
3. 设计模式
创建型
- 工厂方法:隔离创建对象的细节,使得创建对象的行为可扩展
- 优点:创建从使用中解耦
- 缺点:每次增加一个新的分类,都要增加一个创建的具体工厂
- 抽象工厂:抽象出一组相关对象的接口,每个方法即为工厂方法
- 优点:创建一组产品对象,只需要实现相应的具体工厂就好了
- 缺点:产品族扩展非常困难,增加一个系列,既要在抽象工厂类添加代码,又要在具体工厂里添加代码
- 建造者
- 原型
- 单例
结构型
- 适配器:强调将现有接口转变成需要的接口
- 优点:提升现有类的复用性、提升扩展性、可避免对现有代码的修改
- 缺点:过度使用会引入较多零散的类,导致系统变得凌乱
- 桥接
- 组合
- 装饰
- 外观:封装扇出,利用树状结构减少调用者的复杂度。强调统一对外接口
- 优点:降低系统间及系统与外部的耦合度,提升安全性。简化了系统接口,更易于使用
- 缺点:对统一接口的使用可能会引入较多约束,减低灵活性。不易修改,违背开闭原则
- 享元
- 代理
行为型
- 解释器
- 模板方法
- 责任链:一组对象按照既定的顺序关联起来,依次处理请求,其中任一对象都有权停止调用传递
- 优点:
- 降低了对象之间的耦合度
- 增强了系统的可扩展性
- 增强了给对象指派职责的灵活性
- 简化了对象之间的连接
- 责任分担,符合类的单一职责原则
- 优点:
- 命令
- 迭代器
- 中介者
- 备忘录
- 观察者:订阅/发布模型,用于事件驱动的设计。实现了依赖倒置
- 优点:降低了目标与观察者之间的耦合关系。目标和观察者之间建立了一套出发机制
- 状态
- 策略
- 访问者
这篇关于软件建模和设计模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16ShardingSphere 如何完美驾驭分布式事务与 XA 协议?
- 2024-11-16ShardingSphere如何轻松驾驭Seata柔性分布式事务?
- 2024-11-16Maven资料入门指南
- 2024-11-16Maven资料入门教程
- 2024-11-16MyBatis Plus资料:新手入门教程与实践指南
- 2024-11-16MyBatis-Plus资料入门教程:快速上手指南
- 2024-11-16Mybatis资料入门教程:新手必看指南
- 2024-11-16MyBatis资料详解:新手入门与初级实战指南
- 2024-11-16MyBatisPlus资料:初学者入门指南与实用教程
- 2024-11-16MybatisPlus资料详解:初学者入门指南