//----------适配器模式-------------------
//----------------------键盘类--------------
package java_235_GOF23设计模式_适配器模式_对象适配器_类适配器_开发中场景_练习;
/**
-
被适配的类(相对于例子中的ps/2键盘)
*/
public class Adaptee {// Adpatee被改造者public void request(){//request请求
System.out.println(“可以完成客户请求的需要的功能”);
}
}
//------------------------适配器接口---------------------
package java_235_GOF23设计模式_适配器模式_对象适配器_类适配器_开发中场景_练习;
/**
适配器接口
/
public interface Target {//interface接口;Target目标
void handleReq();//handleReq处理请求
}
//-------------------关联的2种方式----1.继承--------------
package java_235_GOF23设计模式_适配器模式_对象适配器_类适配器_开发中场景_练习;
/ -
类适配器方式
*适配器本身(相对于USB与ps/2的转接器)
*/
//关联的2种方式
//1.继承
public class Adapter extends Adaptee implements Target{//这里有个缺点; Adapter继承了Adapteejava是单继承;无法继承其他类;不够灵活
public void handleReq() {
super.request();//request请求
}
}
//-------关联的2种方式—2.整合(对象适配器方式)-------
package java_235_GOF23设计模式_适配器模式_对象适配器_类适配器_开发中场景_练习;
/**
- 对象适配器方式,使用了组合的方式跟被被适配器对象整合
*适配器本身(相对于USB与ps/2的转接器)
/
//关联的2种方式
//2.整合(对象适配器方式)
public class Adapter2 implements Target{//这里有个缺点; Adapter继承了Adapteejava是单继承;无法继承其他类;不够灵活
//添加属性
private Adaptee adaptee;
//重写
public void handleReq() {
adaptee.request();//request请求;调用adaptee方法
}
//构造器
public Adapter2(Adaptee adaptee) {
super();
this.adaptee = adaptee;
}
}
//---------------------客户端-------------------
package java_235_GOF23设计模式_适配器模式_对象适配器_类适配器_开发中场景_练习;
/*
*客户端(相对于例子中的笔记本,只有USB接口)
*/
public class Client {
public void test1(Target t){//Target目标
t.handleReq();//调用USB接口;handleReq处理请求
}
public static void main(String[] args) {
Client c = new Client();//相对于笔记本电脑
Adaptee a = new Adaptee();//相对于键盘
Target t = new Adapter();
Target t2 = new Adapter2(a);
//调用这个方法
c.test1(t);
c.test1(t2);
}
}
//---------------结果-----------------------
工作中的应用场景