2024.11.6

设计模式实验九

软件设计                  石家庄铁道大学信息学院

 

实验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.注意编程规范。

 

posted @ 2024-12-25 10:02  cvjj  阅读(9)  评论(0)    收藏  举报