您的位置:首页 > 编程语言 > Go语言

设计模式GOF23——适配器模式

2016-08-02 13:22 330 查看
适配器模式(adapter)是结构性模式的一种。结构型模式的核心作用是从程序的结构上实现低耦合,从而可以扩大整体的类结构,用来解决更大的问题。

模式的使用场景

将一个类的接口换成客户需要的另外一个接口,Adapter模式使得原本不兼容不能在一起工作的那些类可以在一起工作。

经常用于旧系统的改造升级。

在java.io.InputStreamReader(InputStream)和java.io.OutputStreamWriter(OutputStream)用到

模式中的角色

目标接口(Target):客户期待的接口。目标可以是具体的也可以是抽象的类,也可以是接口。

需要适配的类(adaptee):需要适配的类,或者配置类。

适配器(adapter):通过包装一个合适的对象,把原接口转换成目标接口。

模式的实现

//被适配的类
public class Adaptee {
//被适配的方法
public void request(){
//被适配的类的操作
}
}
//修改后的接口
public interface Target {
//修改后接口的方法
void handleReq();
}
//适配器类
public class Adapter extends Adaptee implements Target{
//适配器的适配方法,这里是用继承的方式实现的
public void handleReq() {
super.request();

}
}
//使用类
public class Client {
//使用类调用适配器的方法
public void test1(Target t){
t.handleReq();
}
//具体使用(继承方式的使用)
public static void main(String[] args) {
Client c = new Client();
Target t = new Adapter();
c.test1(t);
}
}


其实适配器不止可以用上述的继承方式,也可以用下面的组合的方式

//适配器类
public class Adapter implements Target{
private Adaptee adaptee;
//适配器的适配方法,这里是用组合的方式实现的
public void handleReq() {
adaptee.request();
}
public Adapter(Adaptee a){
super();
this.adaptee = a;
}
}
//使用类
public class Client {
//使用类调用适配器的方法
public void test1(Target t){
t.handleReq();
}
//具体使用(组合方式的使用)
public static void main(String[] args) {
Client c = new Client();
Adaptee a = new Adaptee();
Target t = new Adapter(a);
c.test1(t);
}
}


继承的方式使用时代码少一点,但是Java只能但继承,组合的方式虽然对了一个对象的创建,但是让程序的扩展性会变得更好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式