11.18
[实验任务一]:两个维度的桥接模式
用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。
实验要求:
- 画出对应的类图;
- 提交源代码;
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.注意编程规范。