1. 程式人生 > >適配器模式擴展

適配器模式擴展

數據處理 電話 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();
	}
}



適配器模式擴展