封装隐藏--包装的讲究
来源:互联网 发布:阿里云开通子域名 编辑:程序博客网 时间:2024/04/30 04:02
7.3封装隐藏
1. 信息隐藏是一种原则,而封装是实现这种原则的一种技术
2.抽象意味着用户可以从高层的接口来看待或者使用一类对象,而不用关心他的底层实现,而黑盒封装意味着用户不需要也无权访问底层
3.访问控制不仅是一种语法限制,也是一种语义规范--标有public的是接口,标有private的是实现,泾渭分明。
4代码例子
class Person{
private Date birthday;
private boolean sex;
private Person[] childrens;
public Person(Date birthday, boolean sex){
this.birthday = birthday;
this.sex = sex;
}
get,set (birthday,sex,childrens)
}
public int computeAge(){
}
}
<1>如果一个方法返回一个可变域对象的引用,无异于前门紧闭后门洞开。
<2>信息隐藏原则固然重要,但不是金科玉律。在一定条件也是允许的。比如,仅作为数据存储之用的类甚至可以开发所有的云域方法
又比如,在非同类之间共享或传递同一个引用有时是必要的,此外,在一定范围之内为提高效率也可以采取变通之法,避免对象复制
带来的性能损耗
<3>这也是给本班的精神论:第一设计很重要也不容易,需要研究精神
第二,任何人都会犯错误,包括权威,需要批评精神
<4>getChildren,应该返回复制后的数据,但如果用户经常需要获取某一指定位置的child,不妨提供getChild(int index)接口 , 视具体情况而定
还可以引入getchildCount,getFirstChild,getLastChild之类的接口,这样做的好处是:实现代码因较少复制数组而高效,客户代码因较少操作数据
而简洁,甚至连getchildren都不再需要
<5>作为一个建议,不妨将getSex换成 isMale 和 isFemale两个接口,这也提醒诸位,不要陷入追求get和set的对称。
<6>方法 computeAge的问题不在其实现,而是其命名,该名称暗示年龄是计算出来的--尽管的确是事实--》这暴露实现方法,应改为getAge
要知道,信息隐藏中的信息不仅仅是数据结构,还包括实现方式和策略。
<7>领会OOp的精髓绝非一早一夕之功,但若以抽象和封装为钥,必可早些通达。
- 封装隐藏--包装的讲究
- Java: 命名的讲究
- 吃菜的讲究
- 吃菜的讲究
- 加Log的讲究
- 带戒指的讲究
- 讲究门面的Request
- 刷牙讲究的方法
- 封装与信息的隐藏
- Java 的封装与隐藏
- 讲究
- Java /封装/包装/必记的小部分内容
- 饮酒讲究的四个最佳
- IT人士喝酒的讲究
- IT人喝酒的讲究
- 佛珠的颗数有什么讲究
- 佛珠的颗数有什么讲究
- 程序员群聚喝酒的讲究
- [Andriod官方训练教程]支持不同的设备之支持不同的语言
- 通过例子看数组与指针的区别
- Oracle外部表学习和总结
- Ubuntu 中软件的安装、卸载以及查看的方法总结
- ios开发之delegate那点事儿
- 封装隐藏--包装的讲究
- 蛇年春节前最后一个周末
- 袪除疾病的心法(六)
- C读写ini文件
- CMD脚本学习笔记
- 重新认识CICS&RICS
- ruby on rails 测试驱动
- ubuntu 12.04系统托盘不显示ibus输入法图标的解决方法
- MySQL命令行常用命令