编程语言与高级语言虚拟机杂谈仮 2018-04-22
所谓适配器模式,其实很简单,就是将一个类的接口转换成客户端所期待的另一个接口,使得原本不兼容的两个类可以一起工作。
假设我们有一个Type-c接口,但是要使用的接口确实usb的接口,这时候要怎么办呢?解决方法就是用一个适配器将Type-c类转换成usb类,这样我们就能使用这个Type-c接口了。
实现适配器模式有两种方法,分别是组合方式和继承方式。
1.组合方式
组合方式就是讲被适配的对象组合到适配器类中,在这里被适配对象就是就是Type-c接口。
2.继承方式
继承方式就是通过多重继承不兼容的接口以匹配目标接口。
实现代码如下:
Usb.java
package com.muggle.Ada;
public class Usb {
public void useUsb() {
System.out.println("使用了usb接口");
}
}
Typec.java
package com.muggle.Ada;
public interface Tyepec {
public void useTypec() ;
}
Adapter.java
package com.muggle.Ada;
//使用组合方式实现适配器模式
public class Adapter implements Tyepec {
private Usb plug;
public Adapter(Usb plug) {
// TODO Auto-generated constructor stub
this.plug=plug;
}
@Override
public void useTypec() {
// TODO Auto-generated method stub
plug.useUsb();
System.out.println("完成转化使用了Type-c接口");
}
}
newAdapter.java
package com.muggle.Ada;
public class newAdapter extends Usb implements Tyepec {
//使用继承方式实现适配器模式
@Override
public void useTypec() {
// TODO Auto-generated method stub
this.useUsb();
System.out.println("完成转化使用了Type-c接口");
}
}
TestDrive.java
package com.muggle.Ada;
public class TestDrive {
public static void main(String[] args) {
Tyepec tyepec=new Adapter(new Usb());
tyepec.useTypec();
Tyepec newtypec=new newAdapter();
newtypec.useTypec();
}
}运行结果如下:
使用了usb接口
完成转化使用了Type-c接口
使用了usb接口
完成转化使用了Type-c接口
这样我们就使用了适配器模式的两种方法对usb类进行了转换。
前几篇介绍了设计模式的特性并且详细讲解了4种创建型模式,创建型模式是负责如何产生对象实例的,接下来讲讲结构型模式。结构型模式是解析类和对象的内部结构和外部组合,通过优化程序结构解决模块之间的耦合问题。