桥接模式

作用:某一个类,出现2个变化维度。

自行车(自行车车道),公交车(公交车道)。如何实现这样不同车型,不同车道的。情景的代码实现。

我们个人代码可能这样实现。不用车在不同路。

class Road{
    void run(){
        System.out.println("路");
    }
}

子类:

class Street extends Road{
    void run(){
        System.out.println("市区街道");
    }
}

子类:

class SpeedWay extends Road{
    void run(){
        System.out.println("高速路");
    }
}

小汽车在高速公路行驶:

class CarOnSpeedWay extends SpeedWay{
    void run(){
        System.out.println("小车在高速公路行驶");
    }
} 
调用时,new CarOnSpeedWay();

耦合性太高,并且没用的代码很多。 车在路上,2者都在一个对象中。


桥接模式的话:

抽象类:

abstract class Road{
    Car car;
    void run(){};
}

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

具体实现子类:

class Street extends Road{
    void run(){
        super.run();
        car.run();
        System.out.println("在市区街道行驶");
    }
}

class smallCar extends Car{
    void run(){
        super.run();
        System.out.println("小汽车");
    }
}
客户端调用

main(){
    Road street = new Street();
    street.car = new SmallCar();
    street.run();

    street.car = new BusCar();
    street.run();

}
把车与路 从继承 变成耦合。相互独立。


多维度,再增加一个人,不同的人 开不同的车 在不同的路:

再增加一个抽象类:

abstract class People{
    Road road;
    void run(){
        
    }
}

具体实现:

class Man extends People{
    void run(){
        super.run();
        System.out.println("男人开");
        road.run();
    }
}


由上可得,在家一个维度也是没有问题的。

类似于多继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值