设计模式之适配器模式

1 引子

当项目中现有的类不太符合要求时,或许会修改类及方法;但是当项目紧急,等着上线就没有那么多时间让我们review了,这个时候该怎么办呢?
别着急,或许适配器模式可以帮我们解决这个问题。适配器模式的原型代码为:
现有的类Adaptee:

public class Adaptee {
	protected void specialMethod(){
		System.out.println("特殊的方法...");
	}
}

Adaptee类代表现有的类或者别人写的类,方法不满足新的需求;
目标类Target:

public class Target {
	public void method() {
		System.out.println("具有普适功能!");
	}
}

Target类代表新的需求;
适配类Adapter:

public class Adapter extends Target {
	private Adaptee adapee = new Adaptee();
	@Override
	public void method() {
		adapee.specialMethod();
	}
}

Adapter类继承Target类,并聚合Adaptee类的对象;
是的,很简单的原型代码,通过Adapter类调用Adaptee类的方法。这类结构的代码是适配器模式。

2 适配器模式原理

《大话设计模式》中这样定义适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起功能的那些类可以一起工作。
适配器模式的原型代码非常简单, Adapter类把两个不相关的类通过继承目标类,聚合需要适配的类,来达到适配的目的。这里的适配是指调用目标类的method()方法,实则调用需适配类的specialMethod()方法。
uml类图:
适配器模式
Target:目标接口类,用于代表客户希望拥有的目标方法的抽象原型;
OneTarget:目标实体类,表示客户需要的具体方法;
Adaptee:现有的方法,表示需要适配的方法;
Adapter:适配器类,通过适配器类连接目标类和需适配的类;
Client:调用测试类。

3 适配器模式特点

适配器模式说实话,个人感觉不太实用,真要碰到方法不太实用的情况都会直接修改方法,除非方法封装在接口中无法修改或者时间非常紧急没法修改等。
或许你的意识中感觉适配器模式和中介模式有点相似,都是通过另外一个把两个类连接起来;其实他们有本质区别的,区别在于:
中介模式是行为模式,是把现有的类的行为抽取出来。具体可以看这篇中介模式文章,原本xiaoLi和xiaoMing中彼此有联系,行为互相耦合,通过中介模式把耦合的行为抽取出来达到解耦的目的;
适配器模式是结构模式,是把不相关的类联系起来。Target类和Adaptee类通过Adapter类聚合在一起。
所以适配器模式和中介者模式两者的目的不相同。

4 适配器模式使用场景

少见。

5 参考资料

《大话设计模式》

6 源码

https://download.youkuaiyun.com/my

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值