编程教程
你的位置: 中国个人站长站 -- 网络编程 -- ASP.NET教程 -- 教程正文 面向对象的设计
推荐位

面向对象的设计

中国个人站长站 ASP.NET教程 点击数: 更新时间:2004-8-25
        从父类继承来的实现将不能在运行期间进行改变。

Coad规则

仅当下列的所有标准被满足时,方可使用继承:

n         子类表达了“是一个的特殊类型”,而非“是一个由所扮演的角色”。

n         子类的一个实例永远不需要转化(transmute)为其它类的一个对象。

n         子类是对其父类的职责(responsibility)进行扩展,而非重写或废除(nullify)。

n         子类没有对那些仅作为一个工具类(utility class)的功能进行扩展。

n         对于一个位于实际的问题域(Problem Domain)的类而言,其子类特指一种角色(role),交易(transaction)或设备(device)。

继承/组合示例1

n         “是一个的特殊类型”,而非“是一个由所扮演的角色”

F        失败。乘客是人所扮演的一种角色。代理人亦然。

n         永远不需要转化

F        失败。随着时间的发展,一个Person的子类实例可能会从Passenger转变成Agent,再到Agent Passenger

n         扩展,而非重写和废除

F        通过。

n         不要扩展一个工具类

F        通过。

n         在问题域内,特指一种角色,交易或设备

F        失败。Person不是一种角色,交易或设备。

继承并非适用于此处!

 

使用组合进行挽救!

继承/组合示例2

n         “是一个的特殊类型”,而非“是一个由所扮演的角色”

F        通过。乘客和代理人都是特殊类型的人所扮演的角色。

n         永远不需要转化

F        通过。一个Passenger对象将保持不变;Agent对象亦然。

n         扩展,而非重写和废除

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

教程录入:swh    责任编辑:swh 
个人站长站与你风雨同舟!
本站所提供的资源均来源于互联网,如有侵权行为,请与本站管理员联系,我们会第一时间删除!
·如果您发现《面向对象的设计》文章有错误,也请通知我们修改!
联系邮箱chinageren#126.com,谢谢支持!
站内搜索:
广告服务 | 友情链接 | 联系我们 | 免责声明 | 用户留言 | 网站导航
版权所有:中国个人站长站 2007-2008 未经授权禁止复制或建立镜像 客服QQ号:112731235
copyright © 2007-2008 www.ChinaGeRen.com online services. all rights reserved. 苏ICP备05000059号