HIT软件构造学习笔记与心得—5-1

摘要:
白盒复用,黑盒复用
白盒框架(继承),黑盒框架(委托)
委托的种类及其区别
面向复用编程
可重用的外部表现(类型重用(泛型)以及实现重用(接口和抽象类))

面向复用编程
主要有以下几种复用:
代码级别复用:method
模块级别复用:class,interface
Library级别的复用:API
系统级别的复用:框架

白盒复用:
代码本身可知,通常需要某种修改或改编

黑盒复用:
通过提供一些“粘合剂”以现有代码的形式重用,但无需更改代码本身

  • 通常是因为您无法访问代码

继承和委托是两种复用的基本机制,白盒复用基于继承,黑盒复用基于委托。

继承:
Java提供了继承已有类的属性和方法的操作,另外,还可以重写已有的行为

委托(delegation)
委托只是当一个对象依赖于另一个对象来实现其功能的某个子集时
在这里插入图片描述

委托的种类:
在这里插入图片描述
 Association描述的是类与类之间一般的关联关系,而Aggregation和Composition都有整体和部分的关系。其中Aggregation中的部分脱离了整体,部分仍然有意义,是共享式的。而Composition中的部分脱离了整体,部分将没有任何意义,是独占式的。
从实现的角度上讲:
三者中以属性出现时,有着不同的实现方法。其中Association中作为属性出现时,不需要对其进行强制赋值,只要在使用时对其进行初始化即可(让它打球的时候getball)。Aggregation中作为属性出现时,需要在构造器中通过传递参数来对其进行初始化(A委托B,构造A的时候传入一个B就行),也就是说,B脱离了A仍旧有意义。Composition作为属性出现时,需要在整体的构造器中创建部分的具体实例(A委托B,需要在构造A的时候给出B的具体参数去new B),完成对其的实例化,独占式,离开A,B没有任何意义。
在这里插入图片描述
组合是整体的一部分,不可分。聚合彼此可分。
正如之前所说,在聚合时,只需传入一个B对A进行实例化,而在组合时,要传入B的各项参数对B进行实例化,进而对A进行实例化,原因就是B是A的一部分。依赖关系更强。

框架可分为黑盒框架和白盒框架
白盒框架用继承实现,知道具体实现
黑盒框架用委托实现,不需要知道具体实现

可重用性的外部表现
类型可变:通常通过泛型实现。
实现可变:ADT有多种不同的实现,提供不同的representations和 abstract funtion,但具有同样的specification (pre-condition, postcondition, invariants),从而可以适应不同的应用场景。
功能分组:提供完备的细粒度操作,保证功能的完整性,不同场景下复用不同的操作(及其组合)。
表示独立:内部实现可能会经常变化,但客户端不应受到影响,或者说信息隐藏。
共性抽取:将共同的行为(共性)抽象出来,形成可复用实体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值