前言:大家好,我是小熊,25届毕业生,目前在一家满意的公司实习。本篇文章将23种设计模式中的适配器模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。这些东西,刚开始应该是不全面的,后面学习到新知识的话,文章会一直更新的。
🧑个人简介:大家好,我是小熊,一个想吃鱼的男人😉😉
目前状况🎉:25届毕业生,在一家满意的公司实习👏👏💕欢迎大家:这里是CSDN,我用来快速回顾知识准备面试的地方,欢迎来到我的博客😘
适配器模式
适配器模式(Adapter Pattern)属于结构型设计模式,它的作用是将一个类的接口转换成客户希望的另外一个接口。适配器让原本由于接口不兼容而不能一起工作的类可以协同工作。
快速入门核心
Adapter 实现接口(implement)Target或者继承抽象类Target,并引入adaptee类,然后在adapter中,进行组合方法,包装什么的以完成适配。
三个角色
目标抽象类(Target)、适配器类(Adapter)和被适配者类(Adaptee)。
目标抽象类(Target):定义了客户端使用的与特定领域相关的接口,也就是客户端需要的方法。
适配器类(Adapter):通过继承或者组合方式,将被适配者类的接口与目标抽象类的接口转换起来,使得客户端可以按照目标抽象类的接口进行操作。
被适配者类(Adaptee):已经存在的、功能稳定的类,在这里指的是需要适配的类。
意图
把一个类接口转换成另一个用户需要的接口。
类图
两种实现方式
类适配器模式:通过继承来实现适配器功能;
对象适配器模式:通过组合来实现适配器功能。adaptee作为属性引入
Adapeter 类种引入Adapetee,并实现接口Target或者继承抽象类Target,对应以上两种实现方式,
适配器模式在实际开发中非常常见,比如我们经常需要连接各种不同的数据库,每种数据库都有自己独特的接口和方法。如果我们希望写出一段通用的代码,能够连接到任何一种数据库并执行相同的操作,那么适配器模式就非常适合解决这个问题。
接口方式:
这里给出最终adapter效果.
package com.muse.patterns.adapter;
/**
* @description 适配器
**/
public class Adapter implements Target {
// 待适配的类
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void prepare() {
adaptee.prepare1();
adaptee.prepare2();
adaptee.prepare3();
}
public void execute() {
adaptee.doingSomething();
}
}
继承方式:
//todo
At least,最后小熊建议各位