软构第九讲知识点概述

本文探讨了面向复用编程的概念,包括开发可复用的软件和利用可复用组件构建系统。LSP(里氏替换原则)被提及,强调了子类型必须能够替换其基类型。文章还讨论了协变和反协变在Java中的应用,以及数组和泛型的子类型化特性。此外,委托、组合和聚合作为对象间的关系模式被介绍,同时提到了CRP原则,即类应通过组合而非继承来复用。接口的组合和白盒、黑盒测试框架原理也是文章的重点内容。
摘要由CSDN通过智能技术生成

1.Programming for/with reuse

for:面向复用编程,开发可复用的软件

with:基于面向编程,利用可复用软件搭建系统

2.LSP:

1).可以增加方法不可删

2).实现所有抽象类型方法

3).重写方法返回值要相同或为子类型

4).后置条件应更强

5).不能抛出额外异常

3.协变反协变

协变:有更具体规约返回值异常

反协变:有更抽象参数值

Java不能实现反协变

4.数组子类型化:

Java中数组协变每个元素为该数组的子类

5.泛型子类型化:

需要通配符(?extends)(?super)

对象类型子类型

容器类型子类型

6.delegation

委托:

1).dependency未保存委托变量

2).association保存委托变量

association:

composition(不可修改,初始化构造)

aggregation(可以修改但较弱)

7.comparator和comparable

前者是继承委托

后者未使用继承委托

8.CRP原则

1).类应该组合来复用不应该继承

2).组合对象的功能不要扩展

9.接口的组合:

接口之间通过extends来扩展,implements来组合避免继承关系

10.白盒黑盒框架原理及实现

白盒:可以看见代码,通过重写等方式进行拓展

黑盒:可以看见接口看不到代码,用委托来实现拓展

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值