打字猴:1.700466124e+09
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所示。
1700466163
1700466164 代码清单19-5 中转角色
1700466165
1700466166 public class OuterUserInfo extends OuterUser implements IUserInfo{
1700466167
1700466168 private Map baseInfo=super.getUserBaseInfo();//员工的基本信息
1700466169
1700466170 private Map homeInfo=super.getUserHomeInfo();//员工的家庭信息
1700466171
1700466172 private Map officeInfo=super.getUserOfficeInfo();//工作信息
1700466173
[ 上一页 ]  [ :1.700466124e+09 ]  [ 下一页 ]