package com.design.model.adapter;
//目标1
interface IJpan {
public String provid110V();
}
//目标2
interface IChina {
public String provid220V();
}
//适配器
interface IAadpter{
public String provid110V();
public String provid220V();
}
public class Jpan implements IJpan{
@Override
public String provid110V() {
// TODO Auto-generated method stub
return "110V";
}
}
class China implements IChina{
@Override
public String provid220V() {
// TODO Auto-generated method stub
return "220V";
}
}
//适配器转换 1 默认为类适配器 2 注释掉extends Jpan 为对象适配器
class Adapter
// extends Jpan
implements IChina,IAadpter {
//需注入IOC
IJpan jpan= new Jpan();
@Override
public String provid220V() {
// TODO Auto-generated method stub
return "220V";
}
@Override
public String provid110V() {
// TODO Auto-generated method stub
return jpan.provid110V();
}
/* public String provid110V() {
// TODO Auto-generated method stub
return super.provid110V();
}*/
public static void main(String[] args) {
IAadpter adp= new Adapter();
String str1=adp.provid220V();
String str2=adp.provid110V();
System.out.println(str1+" "+str2);
}
}
//输出:220V 110V
对象适配器模式:
package com.design.model.adapter;
import java.util.HashMap;
import java.util.Map;
/**
* 适配器之 对象适配
* @author jakbb
*
*/
interface ICorpInfo {
public String getCorpName();
public String getCorpAddress();
}
interface ICorpInfo2 {
public Map<String,String> getCorpInfo();
}
public class CorpInfo implements ICorpInfo{
@Override
public String getCorpName() {
// TODO Auto-generated method stub
return "中国移动";
}
@Override
public String getCorpAddress() {
// TODO Auto-generated method stub
return "北京";
}
}
class CorpInfo2 implements ICorpInfo2{
@Override
public Map<String, String> getCorpInfo() {
// TODO Auto-generated method stub
Map<String,String> map= new HashMap<String,String>();
map.put("corpName", "中国联通");
map.put("corpAddress", "北京朝阳");
return map;
}
}
class CorpAdapter extends CorpInfo2 implements ICorpInfo{
Map<String,String> map = super.getCorpInfo();
@Override
public String getCorpName() {
// TODO Auto-generated method stub
return map.get("corpName");
}
@Override
public String getCorpAddress() {
// TODO Auto-generated method stub
return map.get("corpAddress");
}
public static void main(String[] args) {
ICorpInfo corpInfo= new CorpAdapter();
String address=corpInfo.getCorpAddress();
String corpName=corpInfo.getCorpName();
System.out.println(address);
System.out.println(corpName);
}
}
/*输出:
北京朝阳
中国联通*/
默认适配器:
1.对象适配器与目标客户关系为实现。
2.类适配器为与目标客户关系为依赖。
3.默认适配器 直接继承 不实现接口。
适配器模式不适合在系统设计阶段采用,没有一个系统分析师会在做详设的时候考虑使用适配器模式,
这个模式使用的主要场景是扩展应用中,就像我们上面的那个例子一样,系统扩展了,不符合原有设计的
时候才考虑通过适配器模式减少代码修改带来的风险。