某个类拥有我们所需要的功能,但他的方法名却不能满足用户的期望,这时候需要使用适配器模式修改这个现存类和外界交互的接口,从而使其能满足用户的需求。适配器模式的宗旨是:保留现有类提供的服务,修改其接口使其能满足用户的需要。
类适配器实例:
/**
* 定义用户使用接口
*/
public interface RequiredClass{
void requiredMethod ();
}
/**
* 定义一个已经存在类,它实现了用户所需要的某些功能
*/
public class ExistingClass{
public void usefulMethod () {
//具体的功能实现.
}
}
/**
* 定义一个新的类进行适配
*/
public class NewClass extends ExistingClass implements RequiredClass{
public void requiredMethod () {
usefulMethod()// 在方法中调用现存类的方法实现用户需要的功能
}
}
*******************************************************************************************************************************************
对象适配器实例:
/**
* 定义用户使用接口
*/
public interface RequiredClass{
void requiredMethod ();
}
/**
* 定义一个已经存在类,它实现了用户所需要的某些功能
*/
public class ExistingClass{
public void usefulMethod () {
//具体的功能实现.
}
}
/**
* 定义一个新的类进行适配
*/
public class NewClass extends RequiredClass{
private ExistingClass existing;
public NewClass(ExistingClass existing) {
super();
this.existing = existing;
}
public void requiredMethod () {
existing.usefulMethod()// 在方法中调用现存类的方法实现用户需要的功能
}
}
*******************************************************************************************************************************************************
另一个生动的例子:
*
源角色
public class Adaptee {
public int get220v(){
return 220;
}
}
* 目标角色
public interface Target
{
int get110v();
int get220v();
}
*
适配器角色:扩展源角色,实现目标角色,从而使得目标角色改动时候,不用改动源角色,只要改动适配器
public class Adapter extends Adaptee implements Target{
public int get110v(){
return 110;
}
}
*
客户端
public class Client
{
public static void main(String
rags[]) {
new Client().test();
}
public void test()
{
Target target = new Adapter();
int v1 = target.get110v();
int v2 = target.get220v();
}
}