设计模式之桥接模式

1.桥接模式概念

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

2.桥接模式的关键组成部分

1)抽象 (Abstraction): 定义使用实现部分的接口

2)细化抽象 (Refined Abstraction): 扩展抽象类,为实现部分定义新的接口。

3)实现者 (Implementor): 定义实现部分的接口。

4)具体实现者 (Concrete Implementors): 实现实现者接口,并提供具体的实现方法。

3.举个栗子

以车的类型和颜色为例:车的类型可以有很多中(小汽车,卡车,拖拉机等等),汽车的颜色也可以有很多中(红色,白色,黑色等)。

4.代码实现

1)ColorType接口

package org.xiji.brige;

public interface CarType {
    /**
     *
     * 获取车类型
     */
     String getType();
}

2)LorryCar实现类

package org.xiji.brige;

/**
 * 货车
 */
public class LorryCar implements CarType{

    @Override
    public String getType() {
        return "货车";
    }
}

3)BusCar实现类

package org.xiji.brige;

/**
 * 客车
 */
public class BusCar implements CarType{
    @Override
    public String getType() {
        return "客车";
    }
}

4)CarColor实现类

package org.xiji.brige;

/**
 * 车抽象类
 */
public abstract class CarColor {
    /**
     * 车类型
     */
    protected CarType carType;
    public CarColor(CarType carType) {
        this.carType = carType;
    }


    /**
     *
     * 抽象方法
     */
    public abstract String getCarColor();

    /**
     * 介绍汽车
     */
    public void introduceCar(){
        System.out.println("这是"+carType.getType()+"是"+getCarColor());
    }
}

5)RedCar实现类

package org.xiji.brige;

/**
 * 红色
 */
public class RedCar extends CarColor{
    public RedCar(CarType carType) {
        super(carType);
    }

    @Override
    public String getCarColor() {
        return "红色";
    }
}

6)BlackCar实现类

package org.xiji.brige;

/**
 * 黑色
 */
public class BlackCar extends CarColor{


    public BlackCar(CarType carType) {
        super(carType);
    }

    @Override
    public String getCarColor() {
        return "黑色";
    }
}

7)桥接测试类

package org.xiji.brige;

/**
 * 桥接模式测试类
 */
public class BridgeMain {

    public static void main(String[] args) {

        //创建车的类型
        //货车
        LorryCar lorryCar = new LorryCar();
        //客车
        BusCar busCar = new BusCar();

        //创建红色客车
        System.out.println("=================================");
        RedCar redBusCar = new RedCar(busCar);
        redBusCar.introduceCar();
        System.out.println("=================================");
        //创建红色的货车
        System.out.println("=================================");
        RedCar redLorryCar = new RedCar(lorryCar);
        redLorryCar.introduceCar();
        System.out.println("=================================");

       //创建黑色的客车
        System.out.println("=================================");
        BlackCar blackBusCar = new BlackCar(busCar);
        blackBusCar.introduceCar();
        System.out.println("=================================");
        //创建黑色的货车
        System.out.println("=================================");
        BlackCar blackLorryCar = new BlackCar(lorryCar);
        blackLorryCar.introduceCar();
        System.out.println("=================================");


    }
}

8)测试结果

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值