您的位置:首页 > 其它

设计模式-适配器模式

2017-10-31 21:51 183 查看

设计模式-适配器模式

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

一般来讲,适配器模式有两种实现方式:

- 继承

- 组合

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();
}
}


这回不继承了,我直接把一个两头的插头放到适配器里面去,到时候就直接用两头的插,插线板也只能被“骗了”。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 继承