设计模式(11):适配器模式

一.什么使适配器模式?

  • 将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

二.模式中的角色

  • 目标角色(Target): 客气所期待的接口。目标可以是具体的或抽象的类,也可以是接口;
  • 需要适配的类(Adaptee): 需要被适配的类或适配者类;
  • 适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。

三.工作中的场景

  • 经常用来做旧系统改造和升级;
  • 如果我们的系统开发之后再也不需要维护,那么很多模式都是没有必要的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍。

四.开发中的场景

  • SpringMVC中的HandlerAdapter使用了适配器模式。处理器的类型不同,处理请求的方式也不同。
  • JDBC驱动程序。不同的数据库提供商实现了不同的JDBC驱动接口,使用适配器模式可以将这些不同的接口适配为标准的JDBC接口,提高应用程序的可移植性。

五.举例代码实现

  • 1.举例: 假如我们的鼠标不是USB接口,是传统的ps/2接口,没有办法连接我们的电脑,这个时候我们需要一个转换头,把传统的ps/2转换成USB。这里我们的转换头就是适配器对象,鼠标就是被适配器对象。
  • 2.代码实现
    • (1)被适配对象(Adaptee)

/**
 * 被适配器(相当于键盘)
 */
public class Adaptee {
	public void request(){
		System.out.println("可以完成客户请求的需要的功能!");
	}
}
    • (2)目标角色(Target)

/**
 * 相当于USB 接口
 */
public interface Target {
	void handleReq();
}
    • (3)适配器(Adapter)

/**
 * 适配器(相当于USB和ps/2转换器)
 */
public class Adapter extends Adaptee implements Target{
	@Override
	public void handleReq() {
		super.request();
	}	
}
    • (4)调用

/**
 * 相当于电脑(只有USB接口)
 */
public class App {
	public void test(Target t) {
		t.handleReq();
	}
	public static void main(String[] args) {
		App c = new App();
		c.test(new Adapter());
	}	
}
    • (5)使用组合的方式跟被适配对象整合

/**
 * 类适配器(相当于转换器)
 * (对象适配器,使用了组合的方式跟被适配对象整合)
 */
public class Adapter implements Target{
	private Adaptee apadtee;
	public Adapter(Adaptee apadtee) {
		this.apadtee = apadtee;
	}
	@Override
	public void handleReq() {
		apadtee.request();
	}
}
    • (6)调用

public class App {
	public void test(Target t) {
		t.handleReq();
	}
	public static void main(String[] args) {
		App c = new App();
		Target t=new Adapter(new Adaptee());
		c.test(t);
	}	
}



更多设计模式学习:

          设计模式(1):介绍
          设计模式(2):单例模式
          设计模式(3):工厂模式
          设计模式(4):建造者模式
          设计模式(5):原型模式
          设计模式(6):桥接模式
          设计模式(7):装饰器模式
          设计模式(8):组合模式
          设计模式(9):外观模式
          设计模式(10):享元模式
          设计模式(11):适配器模式
          设计模式(12):代理模式
          设计模式(13):模板方法模式
          设计模式(14):命令模式
          设计模式(15):迭代器模式
          设计模式(16):观察者模式
          设计模式(17):中介者模式
          设计模式(18):状态模式
          设计模式(19):策略模式
          设计模式(20):责任链模式
          设计模式(21):备忘录模式
          设计模式(22):解释器模式
          设计模式(23):访问者模式

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java的艺术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值