赞
踩
适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户所期望的另一个接口。适配器模式可以在不修改现有代码的情况下,能够使得原本由于接口不兼容而不能一起工作的类能够协同工作,它提供了一种灵活的方式来集成和使用不同接口的类。
大白话:适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者。简单理解就是转换器、转接口的存在。
// 安卓手机接口 public interface AndroidInterface { // typeC接口耳机 void androidHeadSet(); // ..... 其他接口 } // 安卓手机实现类 public class AndroidHeadSet implements AndroidInterface { @Override public void androidHeadSet() { System.out.println("这里是使用安卓耳机接口的连接"); } } // iphone苹果手机接口 public interface IPhoneInterface { // lightning接口耳机 void iphoneHeadSet(); } // 苹果手机实现类 public class IPhoneHeadSet implements IPhoneInterface{ @Override public void iphoneHeadSet() { System.out.println("这里是使用lightning接口耳机的连接"); } } // 注意接下来!!! // 适配器类 public class HeadSetAdapter extends AndroidHeadSet implements IPhoneInterface { // 重写iphone耳机方法 并调用父类安卓耳机的方法,已达到适配器模式的目的 // 解决接口不兼容不能在一起工作的问题 @Override public void iphoneHeadSet() { super.androidHeadSet(); } } // 客户端代码 public class Client { public static void main(String[] args) { // 直接通过苹果接口 使用苹果耳机 IPhoneInterface iPhoneInterface = new IPhoneHeadSet(); iPhoneInterface.iphoneHeadSet(); //通过类的适配器进行连接 HeadSetAdapter headSetAdapter = new HeadSetAdapter(); headSetAdapter.iphoneHeadSet(); } }
这里
HeadSetAdapter
耳机适配器类,为什么会 继承AndroidHeadSet
实现IPhoneInterface
?
通过继承
AndroidHeadSet
,适配器类获得了androidHeadSet()
方法
通过实现IPhoneInterface
接口,在重写的iphoneHeadSet()
方法中调用androidHeadSet()
方法
适配器类能够将IPhoneInterface
接口的调用转发给AndroidHeadSet
类的实现
// 安卓手机接口 public interface AndroidInterface { // typeC接口耳机 void androidHeadSet(); // ..... 其他接口 } // 安卓手机实现类 public class AndroidHeadSet implements AndroidInterface { @Override public void androidHeadSet() { System.out.println("这里是使用安卓耳机接口的连接"); } } // iphone苹果手机接口 public interface IPhoneInterface { // lightning接口耳机 void iphoneHeadSet(); } // 苹果手机实现类 public class IPhoneHeadSet implements IPhoneInterface{ @Override public void iphoneHeadSet() { System.out.println("这里是使用lightning接口耳机的连接"); } } // 注意接下来!!! // 适配器类 public class ObjectHeadSetAdapter implements IPhoneInterface { private AndroidInterface androidInterface; public ObjectHeadSetAdapter(AndroidInterface androidInterface) { this.androidInterface = androidInterface; } @Override public void iphoneHeadSet() { androidInterface.androidHeadSet(); } } public class Client { public static void main(String[] args) { // 直接通过苹果接口 使用苹果耳机 IPhoneInterface iPhoneInterface = new IPhoneHeadSet(); iPhoneInterface.iphoneHeadSet(); //通过类的适配器进行连接 HeadSetAdapter headSetAdapter = new HeadSetAdapter(); headSetAdapter.iphoneHeadSet(); //通过对象的适配器进行连接 AndroidInterface androidInterface = new AndroidHeadSet(); ObjectHeadSetAdapter objectHeadSetAdapter = new ObjectHeadSetAdapter(androidInterface); objectHeadSetAdapter.iphoneHeadSet(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。