设计模式-适配器模式

设计模式-适配器模式

  提起适配器模式。。网上的教程总是会举一个插头和插座的例子。。这个例子其实还不错,但是应用到代码中还是会让人有些迷糊。所以我准备再自己实现一遍。。

一般来讲,适配器模式有两种实现方式:
- 继承
- 组合


1.继承
首先我有一个三孔的插线板

interface plugBoard_3{  
    public void charge_3(); //充电  
}  

如果我要普通地用三孔的插头插插线板,我只需要普通地实现接口 //好多插。。

class chargeBy3 implements plugBoard_3{  
    public void charge_3() {  
        System.out.println("用三孔的插头充电");  
    }  
}  

但是现在如果我只有一个两孔的插头呢。。

class chargeBy2 {  
    public void charge_2() {  
        System.out.println("用两孔的插头充电");  
    }  
}

那么我就需要一个适配器(转换口)

class Adapter extends chargeBy2 implements plugBoard_3{  
    public void charge_3() {  
        super.charge_2(); //现在我就是用适配器充电了。。因为相当于适配器已经盖在了两孔的插座上了  
    }  
}  

真的要插了!

    public static void main(String[] args) { 
        // 用两孔的插头插三孔的插座
        plugBoard_3 adapter = new Adapter();  
        adapter.charge_3();  //表面是charge_3,实际是charge_2
    }  
} 

现在看起来其实就是一个plugBoard_3的对象调用了一个charge_2的方法——通过继承plugBoard的实现类来实现。。。

2. 组合
其他的都和上面的一样,关键是适配器的实现方法:

class Adapter implements plugBoard_3{  
    private chargeBy2 chargeby2;  

    // 可以通过构造函数传入具体需要适配的被适配类对象  
    public Adapter (chargeBy2 chargeby2) {  
        this.chargeby2= chargeby2;  
    }  

    public void charge_3() {  //实现接口中的方法
        this.chargeby2.charge_2();  
    }  
}  

真的要插了!

    public static void main(String[] args) { 
        // 用两孔的插头插三孔的插座
        plugBoard_3 adapter = new Adapter(new chargeBy2());  
        adapter.charge_3();  
    }  
} 

这回不继承了,我直接把一个两头的插头放到适配器里面去,到时候就直接用两头的插,插线板也只能被“骗了”。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值