1700466113
/*
1700466114
1700466115
*员工的家庭信息
1700466116
1700466117
*/
1700466118
1700466119
public Map getUserHomeInfo(){
1700466120
1700466121
HashMap homeInfo=new HashMap();
1700466122
1700466123
homeInfo.put(“homeTelNumbner”,“员工的家庭电话是……”);
1700466124
1700466125
homeInfo.put(“homeAddress”,“员工的家庭地址是……”);
1700466126
1700466127
return homeInfo;
1700466128
1700466129
}
1700466130
1700466131
/*
1700466132
1700466133
*员工的工作信息,比如,职位等
1700466134
1700466135
*/
1700466136
1700466137
public Map getUserOfficeInfo(){
1700466138
1700466139
HashMap officeInfo=new HashMap();
1700466140
1700466141
officeInfo.put(“jobPosition”,“这个人的职位是BOSS……”);
1700466142
1700466143
officeInfo.put(“officeTelNumber”,“员工的办公电话是……”);
1700466144
1700466145
return officeInfo;
1700466146
1700466147
}
1700466148
1700466149
}
1700466150
1700466151
看到这里,咱不好说他们系统设计得不好,问题是咱的系统要和他们的系统进行交互,怎么办?我们不可能为了这一小小的功能而对我们已经运行良好系统进行大手术,那怎么办?我们可以转化,先拿到对方的数据对象,然后转化为我们自己的数据对象,中间加一层转换处理,按照这个思路,我们设计了如图19-3所示的类图。
1700466152
1700466153
1700466154
1700466155
1700466156
图19-3 增加了中转处理的人员信息类图
1700466157
1700466158
大家可能会问,这两个对象都不在一个系统中,你如何使用呢?简单!RMI已经帮我们做了这件事情,只要有接口,就可以把远程的对象当成本地的对象使用,这个大家有时间可以去看一下RMI文档,不多说了。OuterUserInfo可以看做是“两面派”,实现了IUserInfo接口,还继承了OuterUser,通过这样的设计,把OuterUser伪装成我们系统中一个IUserInfo对象,这样,我们的系统基本不用修改,所有的人员查询、调用跟本地一样。
1700466159
1700466160
注意 我们之所以能够增加一个OuterUserInfo中转类,是因为我们在系统设计时严格遵守了依赖倒置原则和里氏替换原则,否则即使增加了中转类也无法解决问题。
1700466161
1700466162
说得口干舌燥,下边我们来看具体的代码实现,中转角色OuterUserInfo如代码清单19-5所示。
[
上一页 ]
[ :1.700466113e+09 ]
[
下一页 ]