HIT软件构造学习笔记-第五章

在这里插入图片描述
运维是软件开发中最困难的环节,处理来自用户报告的故障/问题
纠错性:对BUG进行维护
适应性:例如吧APP从电脑移植到手机
完善性:软件的功能不足,对功能进行扩充
预防性:预见软件后期需要升级,为了适应后期的升级,对软件结构来进行很好的设计。

软件演化:对软件进行持续的更新
如现在大部分的成本都在维护阶段

模块化编程
1)高内聚:每个模块完成一个功能
2)低耦合:每个模块关联少
3)分离关注点:每个模块功能少
4)信息隐藏:模块的信息被隐藏

模块设计五种指标
可分解性:软件可以分成不同模块(每个模块有自己的功能,功能不能太多)。
可组合性:多个模块,把他们组合可以完成软件要求
可理解性:每个模块的类的职责清晰,每个操作有单独的类来完成
可持续性:发生变化时受到影响小
出现异常之后的保护:出现异常后影响范围小,波及的模块越少,异常保护的性能越好

帮助模块化设计的五个指标
直接映射
尽可能少的接口
尽可能小的接口
显示接口
信息隐藏

耦合和内聚
耦合:模块与模块之间的联系程度。耦合的极致就是把所有功能放到一个模块里
在这里插入图片描述

左侧耦合性高。

内聚:每个模块内部功能是仅仅完成一个目标

我们都希望软件是右侧的形式

在这里插入图片描述

策略模式主要用了2和5
单一责任原则SRP 开放封闭原则OCP open close
里氏替换原则LSP 接口分离规则 ISP 依赖注入或倒置原则DIP
高层和底层模块都应该依赖抽象
Creation Patterns
GRAPG(通用职责分配原则):程序有多个职责,应该怎么把职责分到各个类中。

工厂模式(创建模式) 用户不知道要创建哪个类的具体实例
定义一个用来创建具体对象的接口让它的子类来决定实例化哪个类
缺点:会引入额外的复杂性

在这里插入图片描述

搭配固定:
在这里插入图片描述

代理模式:建立一个代理对象,通过代理对象调用真正的对象(主要是委派)。真正的对象可能比较敏感,私密,贵重或是加载非常浪费时间。我们在程序刚开始的时候不需要真的对象,所以就调用假的对象。需要调用真实的对象,假对象通过委托调用真的对象(二者拥有相同的接口)
在这里插入图片描述
Proxy VS Adaptor
在这里插入图片描述
Observer模式
在这里插入图片描述

Visitor :有不同的类,用统一的接入点来运行。
对类的功能进行扩充,但不会对你原有的类进行改变。
主要方法:扔出接口,对接口进行委托来引入新的功能。
只有visitor模式中的接口存在双向委托
在这里插入图片描述

Visitor和策略模式的比较
在这里插入图片描述
模板模式
在这里插入图片描述

Strategy(策略模式)(使用两棵继承树的策略模式又名桥接模式)
在这里插入图片描述

迭代器模式
在这里插入图片描述

工厂类(抽象和非抽象)
在这里插入图片描述

Observor
在这里插入图片描述

Visitor
在这里插入图片描述

状态模式
在这里插入图片描述
核心思想:将程序看作是一个有限状态自动机,侧重于对“状态”及“状态转换”的抽象和编程。
最好不要用if/else结构在ADT内实现状态改变
在这里插入图片描述
1)状态转换有流程的形式,不是瞎转
2)状态中只包含状态相对应的属性,而与具体的对象是没有关系。因为状态是被很多类共享的。

基于语法的软件构造:语法树/正则表达式 :
在这里插入图片描述

非终结符可以被扩展,初始的非终结符被称为根
三个基本操作符:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值