9、深入理解鸭子类型:从代码实践到类型恐惧克服

深入理解鸭子类型:从代码实践到类型恐惧克服

1. 多态与鸭子类型概述

多态意味着一个消息可以有多种形式,接收者会提供其特定版本的行为。实现多态有多种方式,鸭子类型便是其中之一。多态方法遵循一种隐式约定,从消息发送者的角度来看,实现多态方法的对象可以相互替换,发送者无需知晓或关心这种替换。不过,这种可替换性并非自然实现,使用多态时,需确保所有对象行为良好。

2. 编写依赖鸭子类型的代码

使用鸭子类型依赖于识别应用中跨类接口能带来益处的地方。实现鸭子类型相对容易,但关键在于发现需求并抽象其接口。

2.1 识别隐藏的鸭子类型

许多时候,未被认可的鸭子类型已隐藏在现有代码中。以下几种常见编码模式表明可能存在隐藏的鸭子类型:
- 按类进行的 case 语句 :最常见且明显的模式是根据应用领域对象的类名进行切换的 case 语句。例如:

class Trip
  def prepare(preparers)
    preparers.each {|preparer|
      case preparer
      when Mechanic
        preparer.prepare_bicycles(bicycles)
      when TripCoordinator
        preparer.buy_food(customers)
      when Driver
        preparer.gas_up(vehicle)
        preparer.fill_water_tan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值