首页 > 代码库 > 适配器模式扩展
适配器模式扩展
上一次我们讲的例子原角色只有一个,这时我们只需要继承即可。如果有多个实现类呢,Java不支持多重继承,那么我们就重新写一个实现类,然后把其他的类通过引用过来即可,举例来说明:
package adapter.demo; public interface IUserInfo { //获得用户姓名 public String getUserName(); //获得家庭地址 public String getHomeAddress(); //获得手机号码 public String getMobilNumber(); //获得办公室电话 public String getOfficePhoneNum(); //获得公司职位 public String getJobPosition(); //获得家庭电话 public String getHomePhone(); }
package adapter.demo; import java.util.Map; public interface IOuterUserOfficeInfo { //工作区域信息 public Map getUserOfficeInfo(); }
package adapter.demo; import java.util.Map; public interface IOuterUserHomeInfo { //用户的家庭信息 public Map getUserHomeInfo(); }
package adapter.demo; import java.util.Map; public interface IOuterUserBaseInfo { //获得用户的基本信息 public Map getUserBaseInfo(); }
package adapter.demo; import java.util.HashMap; import java.util.Map; public class OuterUserBaseInfo implements IOuterUserBaseInfo{ @Override public Map getUserBaseInfo() { HashMap baseInfoMap = new HashMap(); baseInfoMap.put("username1 ", "name"); baseInfoMap.put("mobile1", "1234455"); return baseInfoMap; } }
package adapter.demo; import java.util.HashMap; import java.util.Map; public class OuterUserHomeInfo implements IOuterUserHomeInfo{ @Override public Map getUserHomeInfo() { HashMap baseInfoMap = new HashMap(); baseInfoMap.put("username ", "name"); baseInfoMap.put("mobile", "1234455"); return baseInfoMap; } }
package adapter.demo; import java.util.HashMap; import java.util.Map; public class OuterUserOfficeInfo implements IOuterUserOfficeInfo{ @Override public Map getUserOfficeInfo() { HashMap baseInfoMap = new HashMap(); baseInfoMap.put("username11 ", "name"); baseInfoMap.put("mobile11", "1234455"); return baseInfoMap; } }
这里是重点,看怎么使用多重继承时的适配器的使用方法
package adapter.demo; import java.util.Map; public class OuterUserInfo implements IUserInfo{ //源对象目标 private IOuterUserBaseInfo baseinfo = null; private IOuterUserOfficeInfo officeinfo = null; private IOuterUserHomeInfo homeinfo = null; //数据处理 private Map baseMap = null; private Map homeMap = null; private Map officeMap = null; //构造函数进行对象传递 public OuterUserInfo(IOuterUserBaseInfo _baseinfo,IOuterUserOfficeInfo _officeinfo,IOuterUserHomeInfo _homeinfo){ this.baseinfo = _baseinfo; this.officeinfo = _officeinfo; this.homeinfo = _homeinfo; this.baseMap = this.baseinfo.getUserBaseInfo(); this.homeMap = this.homeinfo.getUserHomeInfo(); this.officeMap = this.officeinfo.getUserOfficeInfo(); } @Override public String getUserName() { String homeTelNum = (String) this.homeMap.get("username"); System.out.println(homeTelNum); return homeTelNum; } @Override public String getHomeAddress() { String homeAddress = (String) this.homeMap.get("mobile"); System.out.println(homeAddress); return homeAddress; } @Override public String getMobilNumber() { String mobilNum = (String) this.homeMap.get("mobile"); return mobilNum; } @Override public String getOfficePhoneNum() { // TODO Auto-generated method stub return null; } @Override public String getJobPosition() { return null; } @Override public String getHomePhone() { // TODO Auto-generated method stub return null; } }
package adapter.demo; public class Client { public static void main(String[] args) { IOuterUserHomeInfo homeinfo = new OuterUserHomeInfo(); IOuterUserBaseInfo baseinfo = new OuterUserBaseInfo(); IOuterUserOfficeInfo office = new OuterUserOfficeInfo(); IUserInfo girl = new OuterUserInfo(baseinfo, office, homeinfo); girl.getHomeAddress(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。