JAVA适配器模式

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:对象适配器,可以在适配器中方法多个源,也就是可以放入多个需要适配的类。例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值