在对象之间搬移特性---Hide Delegate(隐藏委托关系)
来源:互联网 发布:酷家乐设计软件下载 编辑:程序博客网 时间:2024/04/30 00:59
客户通过一个委托类来调用另一个对象。
在服务类上建立客户所需的所有函数,用以隐藏委托关系。
动机:
封装即使不是对象的最关机特性,也是最关机特性之一。“封装”意味着每个对象都应该少了解系统的其他部分。如此以来,一旦发生变化,需要了解这一变化的就比较少---这会使系统比较容易进行。
任何学过对象技术的人都知道:虽然Java将字段声明为public,但你还是应该隐藏对象的字段。随着经验日渐丰富,你会发现,有更多可以(值得)封装的东西。
如果某个客户需要通过服务对象的字段得到另一个对象,然后调用后者的函数,那么客户就必须知晓这一层委托关系。万一委托关系发生变化,那么客户也得相应变化。你可以在服务对象上放置一个简单的委托函数,将委托关系隐藏起来,从而去除这种依赖。这么以来即使将来发生魏国关系上的变化,变化也将被限制在服务对象中,不会波及客户。
范例:
本例从两个类开始:代表“人”的Person类和代表“部门”的Department类。
class Person{
Department _department;
public Department getDepartment(){
reutrn _department;
}
public void setDepartment(Department department){
_department=department;
}
}
class Department{
private String _chargeCode;
private Person _manager;
public Department(Person manager){
_manager=manager;
}
public Person getManager(){
return _manager;
}
}
..............
如果客户需要知道某一个人的经理是谁,他必须先取得Department对象:
manager=john.getDepartment().getManager();
这样编码就对客户暴露了Department的工作原理,于是客户知道,Department用于追踪“经理”这条信息。如果对客户隐藏Department,可以减少耦合。为了这一目的,
可以在Person类中建立一个简单的委托函数:
public Person getManager(){
return _department.getManager();
}
现在,修改Person的所有客户,让他们改用新函数:
manager=john.getManager();
只要完成了对Department所有函数的委托关系,并修改了相应Person的所有客户,那么就可以移除Person中的访问函数getDepartment()了。
- 在对象之间搬移特性---Hide Delegate(隐藏委托关系)
- 在对象之间搬移特性之五 :Hide Delegate(隐藏「委托关系」)
- Hide Delegate(隐藏委托关系)
- 在对象之间搬移特性---搬移函数
- 7.5 hide delegate (隐藏委托关系)
- Hide Delegate(隐藏“委托关系”)
- 在对象之间搬移特性
- 第七章 在对象之间搬移特性
- 3、在对象之间搬移特性
- 在对象之间搬移特性(一)
- 在对象之间搬移特性(二)
- 第七章 在对象之间搬移特性
- 7. 在对象之间搬移特性
- 重构之在对象之间搬移特性
- 重构系列4.在对象之间搬移特性
- 重构摘要7_在对象之间搬移特性
- 读书笔记 ------ 重构 -> 在对象之间搬移特性
- 重构:二、在对象之间搬移特性
- 解决chrome访问https网站出现“您的连接不是私密的问题”
- 登玉堂阿胶邀您参与2014年度感动山东网络人物评选活动
- Go 1.4正式发布 支持Android开发
- Android code in Eclipse
- 特种浓缩分离:碟管式反渗透膜设备应用
- 在对象之间搬移特性---Hide Delegate(隐藏委托关系)
- 使用 Git 生成标准 Patch
- gdb常用操作
- 简单反射机制
- 保健品市场进入爆发阶段,通过营销和渠道寻求创新是大势所趋
- jQuery验证控件jquery.validate.js使用说明+中文API
- javascript 总结笔记
- linux 下 ffmpeg 没法调试进去的问题
- 【JAVA001】No enclosing instance of type XXX is accessible.