设计模式实验九
软件设计 石家庄铁道大学信息学院
实验9:桥接模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解桥接模式的动机,掌握该模式的结构;
2、能够利用桥接模式解决实际问题。
[实验任务一]:两个维度的桥接模式
用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。
实验要求:
1. 画出对应的类图;
![]()
2. 提交源代码;
// 1. 路的抽象类
interface Road {
void drive();
}
// 2. 水泥路(具体路)
class CementRoad implements Road {
@Override
public void drive() {
System.out.println("在水泥路上开车...");
}
}
// 3. 沥青路(具体路)
class AsphaltRoad implements Road {
@Override
public void drive() {
System.out.println("在沥青路上开车...");
}
}
// 4. 车辆的抽象类
abstract class Vehicle {
protected Road road; // 车辆通过一个路的实例来进行组合
public Vehicle(Road road) {
this.road = road;
}
public abstract void drive();
}
// 5. 具体车辆:Car
class Car extends Vehicle {
public Car(Road road) {
super(road);
}
@Override
public void drive() {
System.out.print("开车: ");
road.drive(); // 调用具体路的drive方法
}
}
// 6. 具体车辆:Bus
class Bus extends Vehicle {
public Bus(Road road) {
super(road);
}
@Override
public void drive() {
System.out.print("公交车: ");
road.drive(); // 调用具体路的drive方法
}
}
// 测试
public class Main {
public static void main(String[] args) {
// 创建不同类型的路
Road cementRoad = new CementRoad();
Road asphaltRoad = new AsphaltRoad();
// 创建不同类型的车辆
Vehicle carOnCement = new Car(cementRoad);
Vehicle busOnCement = new Bus(cementRoad);
Vehicle carOnAsphalt = new Car(asphaltRoad);
Vehicle busOnAsphalt = new Bus(asphaltRoad);
// 测试不同的组合
System.out.println("测试:");
carOnCement.drive();
busOnCement.drive();
carOnAsphalt.drive();
busOnAsphalt.drive();
}
}
3.注意编程规范。