24.11.22

实验9:桥接模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解桥接模式的动机,掌握该模式的结构;

2、能够利用桥接模式解决实际问题。

 

[实验任务一]:两个维度的桥接模式

用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

1. 类图:

 

 

 

2.代码:

 

// 路的抽象接口

interface Road {

    String getRoadType();

}

 

// 水泥路具体实现类

class CementRoad implements Road {

    @Override

    public String getRoadType() {

        return "水泥路";

    }

}

 

// 沥青路具体实现类

class AsphaltRoad implements Road {

    @Override

    public String getRoadType() {

        return "沥青路";

    }

}

 

// 车的抽象类

abstract class Vehicle {

    protected Road road;

 

    // 构造函数接受一个 Road 对象,用于桥接不同的路

    public Vehicle(Road road) {

        this.road = road;

    }

 

    // 抽象方法,用于不同的车实现开车行为

    public abstract void drive();

}

 

// Car 类实现

class Car extends Vehicle {

    public Car(Road road) {

        super(road);

    }

 

    @Override

    public void drive() {

        System.out.println("小汽车在" + road.getRoadType() + "上行驶");

    }

}

 

// Bus 类实现

class Bus extends Vehicle {

    public Bus(Road road) {

        super(road);

    }

 

    @Override

    public void drive() {

        System.out.println("公交车在" + road.getRoadType() + "上行驶");

    }

}

 

// 客户端代码

public class Main {

    public static void main(String[] args) {

        // 在水泥路上开小汽车

        Vehicle carOnCementRoad = new Car(new CementRoad());

        carOnCementRoad.drive();

 

        // 在沥青路上开小汽车

        Vehicle carOnAsphaltRoad = new Car(new AsphaltRoad());

        carOnAsphaltRoad.drive();

 

        // 在水泥路上开公交车

        Vehicle busOnCementRoad = new Bus(new CementRoad());

        busOnCementRoad.drive();

 

        // 在沥青路上开公交车

        Vehicle busOnAsphaltRoad = new Bus(new AsphaltRoad());

        busOnAsphaltRoad.drive();

    }

}

posted on 2024-11-21 21:31  Daniel350  阅读(16)  评论(0)    收藏  举报