面向对象的设计原则(2):OCP

太出名了,不再多谈。主要有两点
 (1) Open for extension
 (2) Closed for modification
 Robert.C.Martin举了一个Shape的例子来说明问题。关键的思想是,如果我们预测到了变化,就可以设计一个抽象来隔离它。但是无论模块是如何得"封闭",都会存在一些无法对之封闭得变化。这需要设计人员对于他设计得模块应该对那种变化封闭作出选择,他必须猜测出最有可能发生变化的种类。然后构造抽象来隔离。这种预测能力需要经验的积累!! 并且通常情况下都会猜测错误,怎么办,Martin给我们指出了一条道路:
 (1)只受一次愚弄
 我们愿意被第一颗子弹击中,然后我们会确保自己不再被同一支枪发射的任何子弹击中
 (2) 刺激变化:
 第一颗子弹来的越早、越快对我们越有利:首先编写测试,使用很短的迭代周期,尽早、经常的把软件展示给客户

 OCP是面向对象设计的核心所在,遵循这个原则可以带来巨大的好处,但是肆意的抽象同样不是一个好注意,拒绝不成熟的抽象和抽象本身一样重要!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值