将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。
适用情况:
使用的前提是:接口中规定了所有要实现的方法; 但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。
实现方法:
用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是空方法;
原本要实现接口的子类,只实现上面的抽象类即可,并在其内部实现时,只对其感兴趣的方法进行实现;
类图:
角色:
目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
需要适配的类(Adaptee): 需要适配的类或适配者类。
适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。
实例:
public interface Target
{
public void request();
}
public class Adaptee
{
public void specialRequest()
{
System.out.println("this is special request");
}
}
public class Adapter implements Target
{
Adaptee adaptee = new Adaptee();
@Override
public void request()
{
adaptee.specialRequest();
}
}
public class Client
{
public static void main(final String[] args)
{
final Target adapter = new Adapter();
adapter.request();
}
}
主要内容:
1) 类适配器
当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。
2)对象适配器
对象适配器通过组合除了满足"用户期待的接口"还降低了代码间的不良耦合。
3)缺省适配器
缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是空方法,而具体的子类都要继承此抽象类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述