扩展我们的视野-关于对象的新描述
2010-03-10 12:50
253 查看
对象:
老观点: 对象是方法加数据,或者说是智能数据。它出发的角度是:从实现的角度。
新的观点:对象是拥有责任的实体,这些责任让对象拥有自己的行为。从概念的角度出来。集中在对象应该做什么。而仅仅是如何实现它们。
如果对象有某种责任,就一定有某种途径要求它履行自己的责任。
封装:
原观点:数据的隐藏
新观点:任何形式的隐藏,它除了隐藏数据外,还可以隐藏实现细节,派生类或者其它东西。
一种类型的封装这样实现:抽象类提供多态行为,于是抽象类的客户不必知道派生类真正表示的类型。
优点:它给我们一种更好的切分程序的方法,封装层成为我将要设计的接口。
发现并封装变化点:
把封装考虑成“使用抽象类隐藏具体类”时,更好。
在对象属性中包含变化和在对象行为中包含变化是非常相似的。
在面向对象程序设计中,任何东西都是对象,即使是内建的数据类型也是对象,它们的行为就是算法。
通常采用的策略是:使用被包含对象来提供所需的行为的策略。
老观点: 对象是方法加数据,或者说是智能数据。它出发的角度是:从实现的角度。
新的观点:对象是拥有责任的实体,这些责任让对象拥有自己的行为。从概念的角度出来。集中在对象应该做什么。而仅仅是如何实现它们。
如果对象有某种责任,就一定有某种途径要求它履行自己的责任。
封装:
原观点:数据的隐藏
新观点:任何形式的隐藏,它除了隐藏数据外,还可以隐藏实现细节,派生类或者其它东西。
一种类型的封装这样实现:抽象类提供多态行为,于是抽象类的客户不必知道派生类真正表示的类型。
优点:它给我们一种更好的切分程序的方法,封装层成为我将要设计的接口。
发现并封装变化点:
把封装考虑成“使用抽象类隐藏具体类”时,更好。
在对象属性中包含变化和在对象行为中包含变化是非常相似的。
在面向对象程序设计中,任何东西都是对象,即使是内建的数据类型也是对象,它们的行为就是算法。
通常采用的策略是:使用被包含对象来提供所需的行为的策略。
相关文章推荐
- 关于数据库对象的扩展属性
- 关于可扩展的web架构设计的探索-框架结构的描述文件
- 关于对象的描述
- 关于PowerDesigner出现不允许有扩展属性,或对象不存在的解决办法
- 关于图像识别,我们是否可以用一种编程语言来描述?
- JS关于对象的安全性之扩展,密封,冻结
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- 关于可扩展的web架构设计的探索-框架结构的描述文件
- 关于可扩展的web架构设计的探索-框架结构的描述文件
- ES6 关于对象的扩展
- 关于PowerDesigner出现不允许有扩展属性,或对象不存在的解决办法
- 关于两个对象交换的扩展
- 刚哥遇到了感情问题(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 上一集我们讲到 作为工作室老大的刚哥遇到很多女生的追求,你帮他个挑选了个英语成绩不错的对象。在你
- 关于产品对象描述的思考
- 关于Hibernate的对象状态转变描述
- JavaScript教程 - 第四部分 关于form对象
- 代码中动态设置控件的属性(侧重讲布局位置的动态设置,能直接用控件对象设置的属性如.setText这些不在下面描述)
- 贴右边关于我们
- MetaTrader软件的功能扩展(关于程序补丁制作的一个例子)
- 关于Lucene4.x起Field对象不在指定域排序的一点解惑