重构对象-Hide Delegate隐藏委托关系五
创始人
2025-05-29 23:58:33
0

重构对象-Hide Delegate隐藏委托关系五

1.隐藏委托关系

1.1.使用场景

向客户端影藏服务端的代理关系,减少客户端和服务端的耦合关系,服务端内部调整结构时不会影响客户端使用。
举个例子
A类作为调用方他承扮演客户端角色;B和C类组合提供服务扮演服务端角色;
没有影藏委托关系,调用流程:当A类需要获取服务时,它首先获取B类对象,B类委托给C类实现该功能,于是通过B类对象获取C类对象提供的服务。如果B或C做出调整,那么A类也要跟着调整才能继续获取服务。
影藏委托关系,调用流程:在B类中获取将C类服务影藏委托关系,此时A类调用B类就可以获取服务。如果C类做出调整,那么只有B类调整即可,不会影响到C类。

1.2.如何做

  • 对于每一个委托关系中的函数,在服务对象端建立一个简单的委托函数。
  • 调整客户,令它只调用服务对象提供的函数。
  • 如果使用者和服务提供者不在同一个包,考虑修改委托函数的访问权限,让客户得以在包之外调用它。
  • 每次调整后,编译并测试。
  • 如果将来不再有任何客户需要取用(受托类),便可移除服务对象中的相关访问函数。
  • 编译,测试。

1.3.示例

本例从两个classes开始,代表「人」的Person和代表「部门」的Department:

 class Person {Department _department;//返回部门对象public Department getDepartment() {return _department;}//创建部门对象public void setDepartment(Department arg) {_department = arg;}}class Department {// 部门代号private String _chargeCode;// 经理private Person _manager;// 设置部门public Department (Person manager) {_manager = manager;}// 返回经理信息public Person getManager() {return _manager;}...

如果客户希望知道某人的经理是谁,他必须先取得Department对象

// john是Person的对象,查询john的经理manager = john.getDepartment().getManager();

这样的编码就是对客户揭露了Department的工作原理,于是客户知道:Department用以追踪「经理」这条信息。如果对客户隐藏Department,可以减少耦合(coupling)。 为了这一目的,我在Person中建立一个简单的委托函数:

   public Person getManager() {return _department.getManager();}

现在,我得修改Person的所有客户,让它们改用新函数:

 manager = john.getManager();

只要完成了对Department所有函数的委托关系,并相应修改了Person的所有客 户,我就可以移除Person中的访问函数getDepartment()了。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...