实验9:桥接模式

实验9:桥接模式

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

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

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

 
   

 


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

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

实验要求:

1.画出对应的类图;

 

 

2.提交源代码;

JAVA

public class Bus implements Vehicle

{

@Override

public void drive()

{

System.out.print("大巴");

}

}

public class Car implements Vehicle

{

@Override

public void drive()

{

System.out.print("小轿车");

}

}

public class CementRoad extends Road

{

public CementRoad(Vehicle vehicle)

{

super(vehicle);

}

@Override

public void driveOnRoad()

{

super.vehicle.drive();

System.out.println("行驶在水泥路");

}

}

public class main {

public static void main(String[] args) {

Road road = new CementRoad(new Car());

road.driveOnRoad();

}

}

public abstract class Road

{

protected Vehicle vehicle;

public Road(Vehicle vehicle)

{

this.vehicle = vehicle;

}

public abstract void driveOnRoad();

}

public class UnpavedRoad extends Road

{

public UnpavedRoad(Vehicle vehicle)

{

super(vehicle);

}

@Override

public void driveOnRoad()

{

super.vehicle.drive();

System.out.println("行驶在沥青路");

}

}

public interface Vehicle {

public void drive();

}

C++

#include <iostream>

using namespace std;

class Transportation

{

public:

    virtual void drive(){}

};

class Car:public Transportation

{

public:

    void drive()

    {

        cout<<"小轿车";

    }

};

class Bus:public Transportation

{

public:

    void drive()

    {

        cout<<"大巴";

    }

};

class Road

{

public:

    Transportation* transportation;

 

    Road(Transportation* transportation)

    {

        this->transportation=transportation;

    }

    virtual void driveOnRoad(){}

};

class CementRoad:public Road

{

public:

    CementRoad(Transportation* transportation):Road(transportation)

    {

    }

    void driveOnRoad()

    {

        transportation->drive();

        cout<<"行驶在水泥路"<<endl;

    }

};

class BituminousRoad:public Road

{

    public:

    BituminousRoad(Transportation* transportation):Road(transportation)

    {

    }

    void driveOnRoad()

    {

        transportation->drive();

        cout<<"行驶在柏油路"<<endl;

    }

};

int main()

{

    Transportation* transportation;

    Car car=Car();

    transportation=&car;

    CementRoad(transportation).driveOnRoad();

}

 

 

 

 

 

3.注意编程规范。

posted @ 2022-10-27 10:30  萧贾jzm  阅读(35)  评论(0编辑  收藏  举报
//歌单id