适配器模式

来源:互联网 发布:urllib json 编辑:程序博客网 时间:2024/06/04 23:26

定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式又叫变压器模式,也叫包装模式,装饰模式也是包装模式。


适配器有三个角色:

1.Target目标角色      该角色定义把其他类转换为何种接口,也就是我们期望的接口。

2.Adapter源角色       你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对象,经过适配器角色的包装,会成为一个崭新、靓丽的角色。

3.Adapter适配器角色 适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建立的,它的职责非常简单:通过继承或是类关联的方式,把源角色转换为目标角色。

适配器模式通用源码

/** * 目标角色是一个已经正在运行的角色,你不可能去修改角色中的方法,你能做的就是如何去实现接口中的方法, * 通常情况下,目标角色是一个接口或者抽象类,一般不会是实现类。 *  * */public interface Target {public void request();}
public class ConcreteTarget implements Target{@Overridepublic void request() {System.out.println("if you need any help,pls call me");}}

public class Adaptee {/** * 原有的业务逻辑 */public void doSomething(){System.out.println("i am kind of busy,leave me alone,pls");}}
/** * 适配器角色 */public class Adapter extends Adaptee implements Target{@Overridepublic void request() {super.doSomething();}}
public class Client {public static void main(String[] args){Target target = new ConcreteTarget();target.request();Target adaptee = new Adapter();adaptee.request();}}

适配器的优点:

1.适配器模式可以让两个没有任何关系的类在一起运行,只要适配器这个角色能够搞定这两个类。

2.增加类的透明性 我们访问的Target目标角色,但是具体的实现都委托给了源角色,而这些对高层模块是透明的,也是它不需要关心的。

3.提高了类的复用度。

4.灵活性非常好

使用场景:要修改一个已经投产中的接口时,适配器模式可能是最适合的模式。



0 0
原创粉丝点击