Consturctrue of software知识点笔记第4章

  • 源代码级别的复用
  • 模块级别的复用:类/抽象类/接口
  • 库级别的复用:API/包
  • 系统级别的复用:框架

继承 VS. 委托

面向复用的软件构造技术(construction of reuse)

subtyping:B是A的子类型=任何⼀个B都是A
在这里插入图片描述
① ⾏为子类型
子类型多态:客户端可⽤统一⽅式处理不同类型的对象
②Liskov替换原则
在这里插入图片描述
③例:正⽅形是特殊的⻓⽅形,正⽅形是否是⻓⽅型子类?
在这里插入图片描述
在这里插入图片描述
post-condition出现冲突

B要继承A,必满足:
在这里插入图片描述
④协变Covariance
在这里插入图片描述
在这里插入图片描述
⑤反协变、逆变)(java不支持,认为其为overload)
在这里插入图片描述
接收参数的范围变广

⑥泛型中的Liskov置换原则
在这里插入图片描述
如何让类型的司的两泛型产⽣联系:通配符(wildcard)?

  1. list.size()等不依赖类型的操作

  2. object方法(所有类型共享)
    在这里插入图片描述
    ⑦委托(delegation):一个对象请求另一个对象的功能
    在这里插入图片描述
    隐式委派(少) /显式委派(直接调⽤)
    在这里插入图片描述
    (3)何时⽤继承何时⽤委托 ?例 Graph和 FriendshipGraph
    在这里插入图片描述
    如果⼦类只需复⽤父类中的⼀部分⽅法 ,通过委托调⽤部分⽅法,避免⽆⽤⽅法

    (4)组合优于继承原则
    delegation在对象object层⾯,⽽继承发⽣在class层面

委托的种类:

  • dependency 依赖 :临时性的委托 ,通过参数将对象法传入
  • Association 关联 :永久性的委托 ,直接new ⼀个属性
  • Composition 组合 :更强的委托,直接在该类中实例化个其他类
  • Aggregation 聚集 :更弱的委托 ,建⽴上述联系后可传⼊参数改变

⑧ API :程序员为主导
Framework :框架为主导
白盒框架:模板模式
黑盒框架:策略/观察者模式

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值