编程语言与高级语言虚拟机杂谈仮 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种创建型模式,创建型模式是负责如何产生对象实例的,接下来讲讲结构型模式。结构型模式是解析类和对象的内部结构和外部组合,通过优化程序结构解决模块之间的耦合问题。