设计模式三之适配器模式

类适配器

/*
被适配的类输出的数字是220
*/
public class Src220 {
    int output(){
        return 220;
    }
}
/*
目标期望输入另一个数
*/
public interface Des5 {
    int input();
}
/*
类适配器就是经过适配 将被适配的类的值进行处理 变成想要的值
*/
public class VolAdapter extends Src220 implements Des5{
    @Override
    public int input() {
        int output = output();
        return output/44;
    }
}
public class Phone {
    void charge(Des5 des){
        int input = des.input();
    }
}
public class Client {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.charge(new VolAdapter());
    }
}

对象适配器

/*
对象适配器和类适配器的不同在于 并不需要继成被适配的类 而是把被适配的类作为一个属性
*/
public class Src220 {
    int output(){
        return 220;
    }
}
public interface Des5 {
    int input();
}
public class VolAdapter implements Des5{
    private Src220 src;
    public VolAdapter(Src220 src) {
        this.src = src;
    }
    @Override
    public int input() {
        int output = src.output();
        return output/44;
    }
}
public class Phone {
    void charge(Des5 des){
        int input = des.input();
    }
}
public class Client {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.charge(new VolAdapter(new Src220()));
    }
}

接口适配器

public interface SrcInterface {
    int add();
    int subtract();
}
public class AbsAdapter implements SrcInterface{
    @Override
    public int add() {
        return 0;
    }
    @Override
    public int subtract() {
        return 0;
    }
}
/**
接口适配器的好处在于
当我只需要用到某个接口里面一部分的方法时 就可以先用一个抽象的适配器类 去对接口实现空实现
然后再去继承适配器 这样可以让类的结构更简洁。
*/
public class Des extends AbsAdapter{
    @Override
    public int add() {
        /**
         * 想要的处理
         */
        return super.add();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值