适配器模式定义:将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
优点:
1、适配器模式可以让两个没有任何关系的类在一起工作,只要适配器这个角色能够搞定他们。
2、增加类的透明性。
3、提供类的复用度。
4、灵活性非常好。
注意:
1、适配器模式是为解决已有项目的办法,在新的项目的开发阶段不要考虑使用。
2、项目要遵守里氏替换原则和依赖倒置原则。
类图如下:
实现代码如下:
源类:
package com.designpatterns.adapter;
/**
* @author WSYW126
* @version 2016年5月4日下午9:29:16
*/
public class Adaptee {
public void doSomething(){
System.out.println("I am busy!");
}
}
目标类:
package com.designpatterns.adapter;
/**
* @author WSYW126
* @version 2016年5月4日下午9:27:45
*/
public interface Target {
public void request();
}
适配器角色类:
package com.designpatterns.adapter;
/**
* @author WSYW126
* @version 2016年5月4日下午9:28:32
*/
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.doSomething();
}
}
测试类:
package com.designpatterns.adapter;
/**
* @author WSYW126
* @version 2016年5月4日下午9:30:22
*/
public class Client {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.request();
}
}
上面是一个简单通用的适配器模式。
如果出现一个适配器角色需要完成多个源的任务,那么这时候就没有办法使用继承的方式了。
我们可以使用对象层次的关联关系进行委托。
这样的适配器可以叫做对象适配器。因此我们可以把通过继承实现的方式叫做类适配器。
最后总结两者的区别:
类适配器:类间继承。
对象适配器:对象的合成关系。
参考资料:
设计模式之禅
备注:
转载请注明出处
http://blog.youkuaiyun.com/wsyw126/article/details/51318720
by WSYW126