前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >适配器模式扩展

适配器模式扩展

作者头像
用户5166556
发布2019-04-16 14:56:27
3560
发布2019-04-16 14:56:27
举报

上一次我们讲的例子原角色只有一个,这时我们只需要继承即可。如果有多个实现类呢,Java不支持多重继承,那么我们就重新写一个实现类,然后把其他的类通过引用过来即可,举例来说明:

代码语言:javascript
复制
package adapter.demo;

public interface IUserInfo {
	//获得用户姓名
	public String getUserName();
	//获得家庭地址
	public String getHomeAddress();
	//获得手机号码
	public String getMobilNumber();
	//获得办公室电话
	public String getOfficePhoneNum();
	//获得公司职位
	 public String getJobPosition();
	 //获得家庭电话
	 public String getHomePhone();
}
代码语言:javascript
复制
package adapter.demo;

import java.util.Map;

public interface IOuterUserOfficeInfo {
	//工作区域信息
	public Map getUserOfficeInfo();
}
代码语言:javascript
复制
package adapter.demo;

import java.util.Map;

public interface IOuterUserHomeInfo {
	//用户的家庭信息
	public Map getUserHomeInfo();
}
代码语言:javascript
复制
package adapter.demo;

import java.util.Map;

public interface IOuterUserBaseInfo {
	//获得用户的基本信息
	public Map getUserBaseInfo();
}
代码语言:javascript
复制
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;
	}

}
代码语言:javascript
复制
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;
	}

}
代码语言:javascript
复制
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;
	}

}

这里是重点,看怎么使用多重继承时的适配器的使用方法

代码语言:javascript
复制
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;
	}

}
代码语言:javascript
复制
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();
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年07月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档