适配器模式扩展

上一次我们讲的例子原角色只有一个,这时我们只需要继承即可。如果有多个实现类呢,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();
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券