11.18

[实验任务一]:两个维度的桥接模式
用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。
实验要求:

  1. 画出对应的类图;

  1. 提交源代码;
package bridge;

// 抽象的车辆类
abstract class Vehicle {
    abstract void drive();
}

// 具体的汽车类
class Car extends Vehicle {
    @Override
    void drive() {
        System.out.println("小汽车");
    }
}

// 具体的公交车类
class Bus extends Vehicle {
    @Override
    void drive() {
        System.out.println("公交车");
    }
}

// 抽象的道路类
abstract class Road {
    protected Vehicle vehicle;
    
    public Road(Vehicle vehicle) {
        this.vehicle = vehicle;
    }
    
    abstract void driveOnRoad();
}

// 具体的沥青路类
class AsphaltRoad extends Road {
    public AsphaltRoad(Vehicle vehicle) {
        super(vehicle);
    }
    
    @Override
    void driveOnRoad() {
        System.out.print("在沥青路上行驶的是");
        vehicle.drive();
    }
}

// 具体的水泥路类
class CementRoad extends Road {
    public CementRoad(Vehicle vehicle) {
        super(vehicle);
    }
    
    @Override
    void driveOnRoad() {
        System.out.print("在水泥路上行驶的是");
        vehicle.drive();
    }
}

// 测试类
public class BridgeDemo {
    public static void main(String[] args) {
        // 创建车辆
        Vehicle car = new Car();
        Vehicle bus = new Bus();
        
        // 创建不同的道路
        Road asphaltRoad1 = new AsphaltRoad(car);
        Road asphaltRoad2 = new AsphaltRoad(bus);
        Road cementRoad1 = new CementRoad(car);
        Road cementRoad2 = new CementRoad(bus);
        
        // 测试不同组合
        asphaltRoad1.driveOnRoad();  // 在沥青路上行驶的是小汽车
        asphaltRoad2.driveOnRoad();  // 在沥青路上行驶的是公交车
        cementRoad1.driveOnRoad();   // 在水泥路上行驶的是小汽车
        cementRoad2.driveOnRoad();   // 在水泥路上行驶的是公交车
    }
}

3.注意编程规范。

posted @ 2024-11-18 08:36  aallofitisst  阅读(13)  评论(0)    收藏  举报