一些面向对象的设计法则 学习笔记
来源:互联网 发布:拉伸运动软件 编辑:程序博客网 时间:2024/05/22 03:09
一些面向对象的设计法则 Bob Tarr著
Favor Composition Over Inheritance
组合的优点
容器类仅能通过被包含对象的接口来对其进行访问。
对装性好。
实现上的相互依赖性比较小。(译者注:被包含对象与容器对象之间的依赖关系比较少)
组合的缺点
从而导致系统中的对象过多。
必须仔细地对接口定义
继承
将父类的实现细节暴露给子类
易于修改或扩展那些被复用的实现。
判断标准:
继承: “是一个…的特殊类型”,
组合:“是一个由…所扮演的角色”,或者 has a
如乘客只是Person所扮演的一种角色,则在Person中组合乘客。
Program To An Interface, Not An Implementation
接口的优点:
可以被另一个对象替换
增加了重用的可能
接口的缺点:
设计的复杂性略有增加
接口表示“…像…”(LikeA)的关系,继承表示“…是…”(IsA)的关系,组合表示“…有…”(HasA)的关系
Software Entities Should Be Open For Extension, Yet Closed For Modification
对扩展开放,对修改封闭,算是设计软件的一种原则吧,比较抽象
单选法则(the Single Choice Principle)
无论在什么时候,一个软件系统必须支持一组备选项,理想情况下,在系统中只能有一个类能够知道整个的备选项集合。
替换法则(LSP)
以基类做参数的函数,当传入派生类对象也可以使用,也就是不需要向下转型。
用于区分不该用的继承
为了保持LSP(并与开放-封闭法则一起),所有子类必须符合使用基类的client所期望的行为。
一个子类型不得具有比基类型(base type)更多的限制,可能这对于基类型来说是合法的,但是可能会因为违背子类型的其中一个额外限制,从而违背了LSP!
LSP保证一个子类总是能够被用在其基类可以出现的地方!
- 一些面向对象的设计法则 学习笔记
- 一些面向对象的设计法则 2
- 一些面向对象的设计法则
- 一些面向对象的设计法则
- 一些面向对象的设计法则
- 一些面向对象的设计法则(1)
- 一些面向对象的设计法则(2)
- 一些面向对象的设计法则(3)
- 一些面向对象的设计法则(4)
- 一些面向对象的设计法则
- 一些面向对象的设计法则
- 一些面向对象的设计法则(1)
- 一些面向对象的设计法则(2)
- 一些面向对象的设计法则(3)
- 一些面向对象的设计法则(4)
- 一些面向对象的设计法则(2)
- 一些面向对象的设计法则(3)
- 一些面向对象的设计法则
- 表单属性
- 分布式数据库
- PHP的isset和empty的区别(3600gz.cn)
- Android Training - 网络操作(3) - 解析XML数据
- 关于SIGPIPE导致的程序退出
- 一些面向对象的设计法则 学习笔记
- struct 关键字
- 深入理解计算机系统
- 有关send(),recv()函数的理解
- arcgis10破解安装
- 整数和浮点数
- 委托应用
- 上传文件、图片
- 【字符集UTF8】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题