前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《敏捷软件开发:原则、模式与实践》笔记(4)

《敏捷软件开发:原则、模式与实践》笔记(4)

作者头像
sickworm
发布2019-07-24 15:09:31
4590
发布2019-07-24 15:09:31
举报
文章被收录于专栏:sickworm

第 10 章 Liskov 替换原则(LSP)

一个模型,如果孤立的来看,并不具有真正意义上的有效性。模型的有效性只能通过它的客户程序来体现。能解决问题的模型才是好模型

IS-A 的关系是就行为方式而言的。Rectangle 可以单独设置长宽,Square 不可以,他们的行为是不一致的。(但如果边长只能在创建时设置,那其余部分的行为是可以一致的。所以还是要看如何使用。)

可以通过编写单元测试的方法指定契约(约定,如 Rectangle 设置完 width 之后 height 不变)。

Line(线) 和 LineSegment(线段) 的 LSP 问题:Line 有两个点 p1,p2,还有一个 isOn 虚函数,返回该点是否在线上。LineSegment 继承于 Line,也有 isOn 函数。但 LineSegment 的 isOn 的行为与 Line 不一致,导致 LineSegment 作为 Line 时导致函数结果异常。解决办法是:抽取 Line 和 LineSegment 的公共部分,作为 LineObject,Line 和 LineSegment 分别继承它。

第 11 章 依赖倒置原则(DIP)

高层不应该依赖于低层,二者都应该依赖于抽象。

抽象不应该依赖于细节,细节应该依赖于抽象。

依赖倒置原则的核心就是要我们面向接口编程。

Don’t call us,we’ll call you.

第 12 章 接口隔离原则(ISP)

ISP 用来处理胖接口所具有的的缺点。胖接口可以分解成多组方法。每一组方法都服务于一组不同的客户程序。

不应该强迫客户依赖于它们不用的方法。如果强迫客户程序依赖于那些它们不适用的方法,那么这些客户程序就面临着由于这些未使用的方法的改变所带来的的变更。

版权所有,转载请注明出处:

https://cloud.tencent.com/developer/article/1471010

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年3月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第 10 章 Liskov 替换原则(LSP)
  • 第 11 章 依赖倒置原则(DIP)
  • 第 12 章 接口隔离原则(ISP)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档