软件构造笔记总结:第4章-软件的可复用性

本章分为三个部分,分别为变量、语法、外部条件;可复用的构造和基于可复用性的设计模式。
一、变量、语法和外部条件
1.可复用的原因:很多软件都或多或少地具有共性,要把它们提取出来,重复利用一些共性,可以省去我们大部分的时间。
2.可复用的分类:分为面向复用编程(编出可复用的软件)和基于复用编程(利用已经有的可复用软件搭建应用系统)
3.复用的层级:从低到高依次是代码层面(复制粘贴)、模块层面(类和接口的重用)、库层面(整个库的复用)、架构层面(框架framework)的复用。
(1)代码层面:没什么好说的,复制粘贴。而且用别人的代码很容易不兼容,弄出一堆错误,得不偿失。
(2)模块层面:涉及了继承和委托等手段。
(3)库层面:framework作为主程序执行,调用开发者编写的程序。
(4)架构层面:framework:一组具体类、抽象类及其之间的连接关系,只有骨架,让开发者填上“血肉”。白盒框架:直接继承框架代码;黑盒框架:放出接口,开发者实现它们并使用委托。
4.白盒复用与黑盒复用:按照复用时能否清楚内部的代码结构来判断黑盒/白盒。
二、可复用性的构造
1.LSP:强行为子类型化。主要就是子类应该在总体上比父类更“强”。给出更少异常/spec要更强/子类型方法参数:逆变/子类型方法返回值和异常类型:协变。
2.协变:子类的类型也是父类的类型的子类,如object→string。
逆变:反协变。
3.委托:一个对象请求另一个对象的功能,这比继承的粒度要小。
(1)dependency:临时的委托
(2)association:永久性的委托
(3)composition:组合,更强的association,但难以变化,难以拆分。
(4)aggregation:聚合,更弱的association,可以动态变化,能拆分。

三、基于可复用性的设计模式
1.结构模式
(1)adaptor:两个接口不匹配时使用,用户调用adaptor,adaptor调用目标类。
(2)decorator:给定一个素体,使用多次委托,每个特性可以任意组合。动态地将新功能附加到装饰对象上。
(3)门面模式facade:为子系统中的一组接口提供一个统一的界面,也就是定义了一个高层接口。
2.行为模式
(1)策略模式:程序内部完成了多个不同的算法来实现同一个任务,根据用户需要,动态地切换算法
(2)模板模式:在一个抽象类里面定义了执行它的方法的模板,但是子类只是选一些方法来重写,并按照模板中定义的方式来调用。
(3)迭代器模式:就是提供一个统一接口来提供一种遍历集合元素的方式,为程序提供“迭代器”并且使内部表示不暴露。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值