您的位置:首页 > 编程语言 > Java开发

java设计模式--适配器模式

2015-10-16 15:53 507 查看
概述:将一个类的接口转换成客户希望的另外一个接口。Adapter接口使得原本由于接口不兼容而不能在一起工作的类能够在一起工作。



适配器的实现方式分为两种:类的适配器模式和对象的适配器模式

(1)类的适配器模式



Adapter类的实现了Targer接口,继承了Adaptee类。

代码示例如下:

package cnic.cn.interf;

public interface Target {

void request();
}


package cnic.cn.impl;

import cnic.cn.interf.Target;

public class TargetImpl implements Target {

public void request() {
System.out.println("This is TargetImpl class...");
}

}


package cnic.cn.impl;

public class Adaptee {
public void specificRequest(){
System.out.println("This is specificRequest class...");
}
}


package cnic.cn.impl;

import cnic.cn.interf.Target;

public class Adapter extends Adaptee implements Target {

public void request() {
super.specificRequest();
}
}


package cnic.cn.impl;

import cnic.cn.interf.Target;

public class Client {

public static void main(String[] args) {
Target target001 = new TargetImpl();
target001.request();
//通过适配器Adapter,Adaptee中的方法得到了应用
Target target002 = new Adapter();
target002.request();
}

}


输出结果如下:

This is TargetImpl class...
This is specificRequest class...


(2)对象的适配器模式



代码示例如下:

package cnic.cn.interf;

public interface Target {

void request();
}


package cnic.cn.impl;

import cnic.cn.interf.Target;

public class TargetImpl implements Target {

public void request() {
System.out.println("This is TargetImpl class...");
}

}


package cnic.cn.impl;

public class Adaptee {
public void specificRequest(){
System.out.println("This is specificRequest class...");
}
}


package cnic.cn.impl;

import cnic.cn.interf.Target;

public class Adapter implements Target{
private Adaptee adaptee;

public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}

public void request() {

this.adaptee.specificRequest();
}

}


package cnic.cn.impl;

import cnic.cn.interf.Target;

public class Client {

public static void main(String[] args) {
Target target001 = new TargetImpl();
target001.request();
//注入一個adaptee對象
Target target002 = new Adapter(new Adaptee());
target002.request();
}

}


输出结果:

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