您的位置:首页 > 其它

设计模式(6)------适配器模式

2016-09-28 09:55 295 查看
适配器模式作用:

将一个类的接口转换为客户希望的另外一个接口,使得不兼容的接口兼容在一起。

应用场景:
(1)当想使用一个已经存在的类,但是类的接口不符合需求;
(2)创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;
(3)不能对子类接口进行匹配时,可以通过适配器模式匹配其父类的接口;

参与对象:
(1)Adaptee
定义一个已经存在的接口,这个接口需要适配。

(2)Taget
定义Client使用的与特定领域相关的接口,目标接口,也可称为标准接口。
(3)Adapter
对Adaptee接口与Taget接口进行适配。

(4)Client
与符号Taget接口对象协同。

eg:
Adaptee
package com.lanhuigu.base.design.construct.adapter;
/**
* 已经存在,具有特殊功能,但是不符合我们已经存在的标准接口
*/
public class Adaptee {
public void adapteeMethod() {
System.out.println("将要被适配的类");
}
}


Target
package com.lanhuigu.base.design.construct.adapter;
/**
* 目标接口(标准接口)
*/
public interface Target {
void adapteeMethod();

void adapterMethod();
}


Adapter
package com.lanhuigu.base.design.construct.adapter;
/**
* 适配器: 将被适配类Adaptee与目标接口Adapter进行适配
*/
public class Adapter implements Target {
private Adaptee adaptee;

public Adapter(Adaptee adaptee) {
// TODO Auto-generated constructor stub
this.adaptee = adaptee;
}

@Override
public void adapteeMethod() {
// TODO Auto-generated method stub
adaptee.adapteeMethod();
}

@Override
public void adapterMethod() {
// TODO Auto-generated method stub
System.out.println("目标接口的方法");
}

}


Test
package com.lanhuigu.base.design.construct.adapter;

public class Test {
public static void main(String[] args) {
// 被适配器类
Adaptee adaptee = new Adaptee();
// 标准接口
Target target = new Adapter(adaptee);
// Adaptee 与 Adapter两个无关的类协同工作
target.adapteeMethod();
target.adapterMethod();
}
}

运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: