【Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式】
知识回顾:
>
之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)---行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)---行为型模式】
【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】
【Java中23种面试常考的设计模式之状态模式(State)---行为型模式】
【Java中23种面试常考的设计模式之策略模式(Strategy)---行为型模式】
【Java中23种面试常考的设计模式之迭代器模式(Iterator)---行为型模式】
【Java中23种面试常考的设计模式之访问者模式(Visitor)---行为型模式】
【Java中23种面试常考的设计模式之中介者模式(Mediator)---行为型模式】
【Java中23种面试常考的设计模式之解释器模式(Interpreter)---行为型模式】
【Java中23种面试常考的设计模式之命令模式(Command)---行为型模式】
【Java中23种面试常考的设计模式之责任链模式(Chain of Responsibility)---行为型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式】。
适配器模式
- 适配器模式:将一个类的接口转换成客户希望的另外一个接口。
- Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
解决的问题
- 主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。
生产开发中常用的使用场景
- SpringAOP中适配器模式。
- JDK适配器模式。
- 等等。。。
模式优点与缺点
优点
- 可以让任何两个没有关联的类一起运行。
- 提高了类的复用。
- 增加了类的透明度。
- 灵活性好。
缺点
- 过多地使用适配器,会让系统非常零乱,不容易进行维护。
核心角色
Target类:用户期待的接口,目标可以是具体的或抽象的类,也可以是接口。
Adapter类:通过在内部包装一个Adaptee对象,把源接口转换成目标接口。
Adaptee类:需要适配的类。
Client---Main:客户端测试类。
UML类图
实现代码
实现方式1:类适配器
Target类
package com.adapter;
public interface Target {
void exec();
}
Adapter类
package com.adapter;
public class Adapter extends Adaptee implements Target {
@Override
public void exec() {
super.action();
}
}
Adaptee类
package com.adapter;
public class Adaptee {
public void action(){
System.out.println("客户端具体想要执行的操作....");
}
}
客户端测试代码Client-Main
package com.adapter;
public class Main {
public static void main(String[] args) {
Target t = new Adapter();
t.exec();
}
}
运行结果展示:
实现方式2:对象适配器
package com.adapter;
interface Target {
void exec();
}
class Adapter implements Target {
private Adaptee adaptee;
@Override
public void exec() {
adaptee.action();
}
public Adapter(Adaptee adaptee) {
super();
this.adaptee = adaptee;
}
}
class Adaptee {
public void action(){
System.out.println("客户端具体想要执行的操作....");
}
}
public class Main {
public static void main(String[] args) {
Target t = new Adapter(new Adaptee());
t.exec();
}
}
运行结果:
好了,到这里【Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式】就结束了,23种设计模式持续更新汇总中。