2.1、适配器模式
(1)定义:将一个类的接口转换成客户所希望的接口,这样可以使得因接口不兼容而不能一起工作的类可以一起工作。
(2)适用性:使用一个已经存在的类或者类库但是接口不符合需求。
(3)参与者:
Adaptee:已经存在的接口或者类,需要进行适配。
Adapter:适配后的类。
Target:需要适配的目标接口。
(4)uml图
(5)代码
目标接口Target:
public interface Target {// 目标接口
void adaptee();
void adapter();
}
需要被适配的接口或类Adaptee
public class Adaptee {// 要转换的接口或者类
public void adaptee() {
System.out.println("adaptee的方法!");
}
}
适配后的类:
public class Adapter implements Target {// 目标接口的具体类
private Adaptee adaptee = null;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void adapter() {
System.out.println("adapter的方法!");
}
@Override
public void adaptee() {
adaptee.adaptee();
}
}
测试类:
public class Client {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target adapter = new Adapter(adaptee);
adapter.adaptee();
adapter.adapter();
}
(1)定义:将一个类的接口转换成客户所希望的接口,这样可以使得因接口不兼容而不能一起工作的类可以一起工作。
(2)适用性:使用一个已经存在的类或者类库但是接口不符合需求。
(3)参与者:
Adaptee:已经存在的接口或者类,需要进行适配。
Adapter:适配后的类。
Target:需要适配的目标接口。
(4)uml图
(5)代码
目标接口Target:
public interface Target {// 目标接口
void adaptee();
void adapter();
}
需要被适配的接口或类Adaptee
public class Adaptee {// 要转换的接口或者类
public void adaptee() {
System.out.println("adaptee的方法!");
}
}
适配后的类:
public class Adapter implements Target {// 目标接口的具体类
private Adaptee adaptee = null;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void adapter() {
System.out.println("adapter的方法!");
}
@Override
public void adaptee() {
adaptee.adaptee();
}
}
测试类:
public class Client {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target adapter = new Adapter(adaptee);
adapter.adaptee();
adapter.adapter();
}
}
(6)实际应用