又到了小葵花妈妈课堂开课的时间啦。今儿让我们来学习一下是适配器模式。
定义
适配器模式,即定义一个包装类,用于包装不兼容接口的对象
其实不看定义,故名思意就知道适配器就是适配不同的接口之间的中间件。生活中的转接口,扩展坞等,其实都是适配器。
主要解决的就是两个原本接口不兼容的类,使之兼容可用。像生活中的数据线就是一个适配器,使充电器和手机兼容可用。
优缺点
优点
- 复用且不修改类 : 不改变现有类的基础上 , 提高类的复用性 , 透明性 ; 让现有类与目标类接口匹配 ;
- 降低耦合 : 目标类 ( 用户调用的接口所在类 ) 和 现有类 ( 被适配者 ) 解除耦合 , 降低了系统的耦合性 , 易于扩展维护 ;
- 符合开闭原则 : 用户调用适配器接口 , 只与适配器类进行交互 , 如果需要修改扩展 , 只需要修改适配器类即可 , 目标类 和 现有类 各自都是相互独立的 , 互不影响 ;
缺点
- 增加复杂性 : 编写适配器类时 , 需要考虑全面 , 包括被适配者 和 目标类 , 系统复杂性会增加 ;
- 降低可读性 : 系统代码可读性降低 , 可维护性降低 ;
举个栗子
类适配器
public interface Target{
public void request();
}
//适配者接口
public class Adaptee{
public void specificRequest()
{
System.out.println("适配者中的业务代码被调用!");
}
}
//类适配器类
public class ClassAdapter extends Adaptee implements Target{
public void request()
{
specificRequest();
}
}
//客户端代码
public static void main(String[] args)
{
System.out.println("类适配器模式测试:");
Target target = new ClassAdapter();
target.request();
}
对象适配器
class ObjectAdapter implements Target
{
private Adaptee adaptee;
public ObjectAdapter(Adaptee adaptee)
{
this.adaptee=adaptee;
}
public void request()
{
adaptee.specificRequest();
}
}
//客户端代码
public static void main(String[] args)
{
System.out.println("对象适配器模式测试:");
Adaptee adaptee = new Adaptee();
Target target = new ObjectAdapter(adaptee);
target.request();
}
总结
总而言之,言而总之,什么是适配器模式呢。就是提供一个类有效的去耦合两个无关类的功能。