14、组合对象:从自行车案例看继承与组合的抉择

组合对象:从自行车案例看继承与组合的抉择

1. 自行车部件管理的初始问题

在自行车对象的构建中,我们最初面临着部件管理的难题。例如,创建公路自行车和山地自行车时,需要明确每个自行车的尺寸和部件:

road_bike =
  Bicycle.new(
    size:  "L",
    parts: Parts.new([chain,
                      road_tire,
                      tape]))

mountain_bike =
  Bicycle.new(
    size:  "L",
    parts: Parts.new([chain,
                      mountain_tire,
                      front_shock,
                      rear_shock]))

这里存在一个问题,我们需要在代码中明确知道每个自行车需要哪些具体的部件对象,并且要创建这些部件对象。这种知识的分散容易导致代码的混乱和难以维护。

2. 部件配置数组的引入

为了解决上述问题,我们引入了部件配置数组。通过一个简单的二维数组,我们可以清晰地描述每个自行车所需的部件:

road_config =
  [['chain',        '11-speed'],
   ['tire_size',    '23'],
   ['tape_color',   '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值