设计模式 -- 适配器模式
设计模式 —— 适配器模式
目录
- 概述
- UML
- 实现
- 优缺点
概述:
适配器模式是 结构型 设计模式的一种。类似于设计一个中间接口,使得两边可以适配使用
定义:将一个接口转化为客户端所期待的接口,从而使两个接口不兼容的类可以在一起工作
适用场景:存在现成的类可以使用,但是我们的系统不兼容它提供的接口,且我们无法对其进行修改;多个团队独立开发系统的各个部分,但是先无法确定接口
UML:
- Target:客户端使用的目标接口
- operation方法:客户端使用的方法
- Adaptee:不兼容的类
- operation方法:类方法
- Adapter:适配器类
- debug方法:自己设定的,使用于接口转换的方法
实现:
实现背景:想要调出某学校某宿舍的全部学生信息,但是学校管理系统大更新了依次,现在无法调用以前的查询接口。
- 确定目标接口
// 旧查询接口,输入宿舍楼,宿舍编号返回信息(简单处理就不返回详细信息了)
public interface SelectStu{
void selectMessage(int HouseNum,int Num);
}
- 第二,三方接口实现
// 输入宿舍楼名称,宿舍号返回信息
public interface NowSelectSys{
void fun(int HouseNum,String HouseName);
}
// 实现类
public class NowSelectSysImpl implements NowSelectSys{
public void fun(int HouseNum,String HouseName){
System.out.println("返回了"+HouseNum+HouseName+"宿舍的信息");
}
}
- 构建适配器
public class SelectAdapter implements SelectStu {
private NowSelectSys nowSelectSys;
// 数字的获取可以是其他程序或者一些方法,目的在将String变为int符合接口
private int HouseNum = 107;
public SelectAdapter(NowSelectSys nowSelectSys){
this.nowSelectSys = nowSelectSys;
}
public void selectMessage(String HouseName,int HouseNum){
nowSelectSys.fun(HouseNum,HouseName);
}
}
- 客户端调用接口
SelectAdapterpublic class AdapterClient{
public void SelectStudent(){
SelectStu selectStu = new SelectAdapter(new NowSelectSysImpl);
selectStu.selectMessage("会泽大楼","一楼七号")
}
}
优缺点:
优点:增强了程序的可扩展性,减少对接口的修改
缺点:需要多管理一层Adapter
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT蛋的个人博客!