Adapter
Adapter
莫问viva 发表于4年前
Adapter
  • 发表于 4年前
  • 阅读 57
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 适配器:基于现有类所提供的服务,向客户提供接口,以满足客户的期望 《Java设计模式》


三要素:

1,客户提供接口

2,现有的类

3,适配器


举例说明:

1,客户提供的接口

public interface ICalculate {

public int getResult(int x , int y);

}


2, 现有类

public class AddCalculate {

public int add(int x, int y){
return x+y;
}

}


3适配器的设计模式实现可分为两类:

(1), 类适配器:继承现有的类,并且实现客户提供的接口

public class Adapter extends AddCalculate implements ICalculate{
public int getResult(int x, int y) {
  return add(x, y);
}
}

(2),对象适配器:

public class Adapter implements ICalculate{

private AddCalculate add ;

public Adapter(AddCalculate add){
this.add = add;
}

public int getResult(int x, int y) {
return add.add(x, y);
}

}


4,测试

public class Main {

public static void main(String args[]){
//class way
ICalculate calculate = new classWay.Adapter();
System.out.println(calculate.getResult(10, 20));

//object way
ICalculate calculate2 = new objectWay.Adapter(new AddCalculate());
System.out.println(calculate2.getResult(10, 20));
}

}

5、类模式/对象模式分析:
由于存在两种Adapter实现方式,那么在实际中我们采用哪一种要好呢?通过分析发现这两种模式有两个主要特性区别,并且还是互补的:
 
A、表现在Adapter对Adaptee的特殊性要求:
类模式由于Adapter是Adaptee的子类,所以Adapter很方便重新定义Adaptee中的个别方法,以达到自己的特性需要。
对象模式由于Adapter不是Adaptee的子类,所以如果Adapter对Adaptee中的个别方法有特殊的需要,就要新建Adaptee的子类,而让Adapter使用这个子类。
 
B、表现在Adaptee的类层次扩展上:
类模式由于Adapter是Adaptee的子类,所以编译后就不能再更换所实现的父类Adaptee,因此如果有一个Adaptee的类层次结构,就要相应的有一个Adapter的类层次结构,且新扩展Adaptee时很不方便。
对象模式由于Adapter不是Adaptee的子类,而是通过使用的方式,所以在系统运行时仍然可以更换Adapter所使用的Adaptee,只要他们具有相同的类型。所以在新扩展Adaptee时很方便。




共有 人打赏支持
粉丝 38
博文 129
码字总数 106697
×
莫问viva
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: