1:适配器模式用在什么地方?
1:当你想使用另一个接口中的与业务无关的某些方法时,而这个接口又有很多方法,你只想使用其中的一个或者几个时,可以使用适配器。
默认适配器模式:最普通的用法,调用一个接口中的某些方法。例:
package com.app.test;
/**
* 业务实现类
* @author Administrator
*
*/
public class Test1 extends Test3 implements Test2{
public void dayin() {
//需要用到a方法,不用 b c方法。
a();
}
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.dayin();
}
}
package com.app.test;
/**
* 业务接口
* @author Administrator
*
*/
public interface Test2 {
public void dayin();
}
package com.app.test;
/**
* 对三个方法进行实现成类供实现类继承,
* 因为继承可以不使用父类的方法,如果有其他类继承这个类,
* 那么这个类就是适配器
* @author Administrator
*
*/
public class Test3 implements Test4{
public void a() {
System.out.println("打印a");
}
public void b() {
System.out.println("打印b");
}
public void c() {
System.out.println("打印c");
}
}
package com.app.test;
/**
* 假如每个实现类中都需要用到下面的一个或者三个方法
* @author Administrator
*
*/
public interface Test4{
void a();
void b();
void c();
}
2:类适配器模式,适用使用单一源,因为类适配器只能继承一个类,例:
package com.app.test;
/**
* 源类,有eat方法,但是又想在某个地方使用时加上drink
* 方法,但是在其他地方不会使用drink,如果此时在此类中加上drink方法,
* 代码就显得重复
* @author Administrator
*
*/
public class Person {
public void eat(){
System.out.println("eat");
}
}
package com.app.test;
/**
* 目标类的接口,这个目标接口拥有drink方法
* @author Administrator
*
*/
public interface inerTest {
public void drink();
}
package com.app.test;
/**
* Person类的适配器继承Person的所有方法,并且实现
* Person1的方法,这个时候使用适配器类就能满足Person类
* eat,drink行为
* @author Administrator
*
*/
public class Adapter extends Person implements inerTest{
public void drink() {
System.out.println("drink");
}
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.eat();
adapter.drink();
}
}
3:对象适配器,可以在适配器中方法多个源,也就是可以放入多个需要适配的类。例: