标签:title mac tree ima doc 简单 方法 ace div
适配器模式(Adapter Pattern)是结构型模式。主要用来解决接口不兼容的问题,将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
适配器模式分为两种:对象适配器、类适配器。
可以看到对象适配器非常类似之前的==装饰器模式==,都是通过组合/聚合来达到扩展的效果。
类适配器通过继承/实现来扩展,需要考虑带来的耦合。
我工作用的电脑是macbookpro,最近想外接一个显示器,等拿到显示器的时候才发现显示器里面给的接线并不能用在mac的lightning接口上。
因此我需要一个转接头。
例子中Target是上图中黄的type-c接口,Adaptee是上图中红色的lightning接口,整个转接头就是Adapter。
目标类
public interface TypeC {
void useTypeCPort();
}
适配者类
public class Lightning {
public void extent() {
System.out.println("通过lightning接口外接显示器");
}
}
对象适配器
public class PortObjectAdapter implements TypeC {
private Lightning lightning;
public PortObjectAdapter(Lightning lightning) {
this.lightning = lightning;
}
@Override
public void useTypeCPort() {
System.out.println("使用type-c转接头");
lightning.extent();
}
}
类适配器
public class PortClassAdapter extends Lightning implements TypeC {
@Override
public void useTypeCPort() {
System.out.println("使用type-c转接头");
super.extent();
}
}
使用
//对象适配器
System.out.println("----对象适配器----");
Lightning lightning = new Lightning();
PortObjectAdapter adapter = new PortObjectAdapter(lightning);
adapter.useTypeCPort();
//类适配器
System.out.println("----类适配器----");
PortClassAdapter adapter1 = new PortClassAdapter();
adapter1.useTypeCPort();
----对象适配器----
使用type-c转接头
通过lightning接口外接显示器
----类适配器----
使用type-c转接头
通过lightning接口外接显示器
标签:title mac tree ima doc 简单 方法 ace div
原文地址:https://www.cnblogs.com/xuxiaojian/p/11493512.html