适配器模式

适配器模式

  1. 别名为包装器,电源适配器
  2. 属于结构型模式
  3. 分为三类:类适配器模式、对象适配器模式、接口适配器模式
public class Voltage220V {
    public int output220V(){
        System.out.println("输出220v的电压");
        int v = 220;
        return v;
    }
}
public interface Voltage5V {
    public int output5V();
}
public class adaptor extends Voltage220V implements Voltage5V {

    @Override
    public int output5V() {
        int v = output220V();
        int vv = v/44;
        return vv;
    }
}
public class Phone {

    public void charging(Voltage5V voltage5V){
        if(voltage5V.output5V()==5){
            System.out.println("正常5v充电");
        }
    }
}
public class client {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.charging(new adaptor());
    }
}
/*类适配器 被适配的类 适配的接口 以及 转换器,手机和适配的接口互相依赖,所谓依赖
* 就是方法中用到它,最后在客户端new手机和NEW 转换器
* 转换器继承了被适配的类,得到里面的东西,然后更改,实现接口完成客户端需要的任务
* 总的来说很巧妙*/
public class adaptor implements Voltage5V {
    /*持有的关系*/
    Voltage220V voltage220V = new Voltage220V();


    @Override
    public int output5V() {
        int v= voltage220V.output220V();
        int vv=v/44;
        return vv;
    }
}
//变成聚合关系,用来解耦
public class Client {
    public static void main(String[] args) {
        V220 v220 = new V220();
        Adapter adapter = new Adapter() {
            @Override
            public int output() {
                int v = v220.output220();
                int vv = v / 44;
                return vv;
            }
        };
        System.out.println("输出电压为"+adapter);


    }
}
//用抽象方法实现接口,为每一个方法提供一个空方法,那么该抽象方法的子类可以选择性覆盖父类的某些方法来实现需求
//client可以直接new一个抽象类,用匿名内部类的方式,或者新建一个具体的实现类,都行
全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务