适配器模式 adapter pattern
[摘自:百度百科] 在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
比如:在JAVA编程过程中,我们可能遇到一种情况,我们需要类A实现接口B,但是类A并没有接口B中的所有方法,而类A也不允许改变。这时我们需要创建一个类C,他继承A并实现接口B,这个类C就是适配器。适配器中的代码,将接收你拥有的接口,并产生你需要的接口。适配模式有两种:类适配器模式和对象适配器模式。
类适配器模式
适配器和被适配的类是继承关系,即为类适配器模式。
//目标接口
public interface TargetInterface{
void method1();
void method2();
}
//不变类,被适配的类
class NoChangeClass{
public void method1(){
System.out.println("i am method1 from NoChangeClass");
}
}
//适配器
class Adapter extends NoChangeClass implements TargetInterface{
public void method2(){
System.out.println("i am method2 from adapter");
}
}
//测试
public class TestClass{
public static void main(String []args){
Adapter adapt=new Adapter();
adapt.method1();
adapt.method2();
}
}
对象适配器模式
适配器和被适配的类是委托关系 ,即适配器持有被适配的引用。
public interface TargetInterface{
void method1();
void method2();
}
class NoChangeClass{
public void method1(){
Sysotem.out.println("I am method1 from NoChangeClass");
}
}
class Adapter implements TargetInterface{
public static NoChangeClass noChangeClass;
public Adapter(NoChangeClass noChangeClass){
this.noChangeClass=noChangeClass;
}
public void method1(){
this.noChangeClass.method1();
}
public void method2(){
System.out.println("I am method2 from Adapter");
}
}