適配器模式擴展
阿新 • • 發佈:2017-06-02
數據處理 電話 client con res 對象 name on() package
這裏是重點,看怎麽使用多重繼承時的適配器的用法
上一次我們講的樣例原角色僅僅有一個,這時我們僅僅須要繼承就可以。
假設有多個實現類呢,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(); } }
適配器模式擴展