大话设计模式-第七夜

小菜与大鸟喜欢看NBA,提到NBA就提到了姚明,虽然已经退役很久了,就说姚明需要翻译。翻译就翻译吧,就说这是适配器模式。其实这章是打算说两种设计模式。为啥呢,因为两个太像了。不进行对比根本就看不出区别(没有对比就没有伤害)。另一个是什么呢,就是桥接模式

适配器模式和桥接模式

适配器模式就是从电脑电源开始演化,因为美国的电压和中国不一样,英国的插头又跟中国的不一样。那怎么办呢,就买个适配器两边一插就好了。
桥接模式就是从大桥演化,因为如果你要从中国开车到美国,就需要横跨太平洋,在太平洋上修一座桥,然后车从上面走,向左走向右走,最终走到了美国。
那么我们可以看出来,其实两者都是进行一个连接。不同是:适配器模式就是一个黑盒子,你跟不需要知道这个适配器是怎么做的,就是知道这边一个接口,那边一个接口两边一对就行了。桥接模式就不行了,你得知道你的车是向左开还是向右开,你需要操作里面的东西才行。

适配器模式和桥接模式类图

这里还是要画两个的类图的:手头没有画图工具,之后再补。

示例

其实这一章是想说适配器模式,不过为了对比,所以写了两个设计模式。
适配器模式:

public interface Target{
    public void request210();
}

public class Adaptee{
    public void power220(){
        System.out.println();
    }
}

public class Adapter extends Adaptee implements Target{
    public void power220(){
        this.request210();
    }
}

public class Test{
    public static void main(String[] args){
        Target adapter = new Adapter();
        adapter.power220();
    }
}

桥接模式:

public abstract class Road{
  public Car car;
  public abstract void drive();
}

public abstract class Car{
  public abstract void run();
}

public class MyCar extends Car{
  public void run(){
    System.out.print("my drive ");
  }
}

class Bridge extends Road{
  public void drive(){
    car.run();
    System.out.println("on the brage");
  }
}

public class Test{
  public static void main(String[] args){
    Car mycar = new MyCar();
    Road bridge = new Bridge();
    bridge.car = mycar;
    bridge.drive();
  }
}

结语

其实这两个模式就是一个是黑盒,一个是白盒,区别就在于一个需要传入Car,另一个只需要知道两端的接口即可。

你可能感兴趣的:(大话设计模式,设计模式)