定义:将一个接口转换成客户期望的另一个接口,让不兼容的类可以合作无间
有过做接口工作经验的朋友,应该会很熟悉这种方式,就是开发一个新接口封装现有的能力提供给别人,只是自己不知道是适配器模式而已
适配对象封装被适配对象和其行为(组合),类似装饰者模式和命名模式,但装饰者模式是同样的接口,封装后新增责任,命令模式是利用这种方式封装出命令对象,将对象参数化调用者,让调用者和执行者解耦。看到这里是不是有点头晕。。。那就看看我前面的博文吧“命令模式”“装饰者模式”
要点:
1.当需要实用一个现有的类,而其接口并不符合你的需求时,采用适配器模式。
2.适配器改变接口以符合客户的期望
3.实现一个适配器可能需要一番功夫,也可能不费功夫,是目标接口的大小与复杂度而定。
4.适配器有两种模式,类适配器和对象适配器,对象适配器更具弹性
实现:
早期Java 集合类有Enumeration进行迭代,后来经过更新有了Iterator,现在新代码要求以前的迭代方式不能再使用,而不修改原来的代码,所以提供适配器EnumerationIterator
package com.jv.designpattern.adapter;
import java.util.Enumeration;
import java.util.Iterator;
public class EnumeratorIterator implements Iterator<Object> {
Enumeration en ;
public EnumeratorIterator(Enumeration en) {
this.en = en;
}
@Override
public boolean hasNext() {
return en.hasMoreElements();
}
@Override
public Object next() {
return en.nextElement();
}
public void remove() {
throw new UnsupportedOperationException();
}
}
截止目前涉及到的模式都摆脱不了这些涉及原则:
1.封装变化
2.多用组合,少用继承
3.针对接口编程,不针对实现编程
4.为交互对象之间的松耦合而努力
5.类应该对扩展开放,对修改关闭
6.依赖抽象,不要依赖具体类
7.只是最小化原则,意思就是让对象依赖更少的对象