2024/11/15

软件设计实验九:

实验任务一]:两个维度的桥接模式
用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。
实验要求:
1.    画出对应的类图;
 
2.    提交源代码;
public interface AbstractRoad {
    public String roadRun();
}

public class AsphaltRoad implements AbstractRoad{

    @Override
    public String roadRun() {
        return "沥青路上";
    }
}

public class Cement implements AbstractRoad{
    @Override
    public String roadRun() {
        return "水泥路上";
    }
}
public abstract class Vehicle {
    protected AbstractRoad road;

    public Vehicle(AbstractRoad road) {
                 this.road=road;
             }
    public abstract void run();
}

public abstract class RefinedVehicle extends Vehicle{
    public RefinedVehicle(AbstractRoad road) {
        super(road);
    }

    public void chooseWay(String str1) {
        String str=str1+road.roadRun();
        System.out.println(str);
    }
}

public class Car extends RefinedVehicle{
    public Car(AbstractRoad road) {
        super(road);
    }

    @Override
    public void run() {
        System.out.println("小汽车");
    }
}

public class Bus extends RefinedVehicle{
    public Bus(AbstractRoad road) {
        super(road);
    }

    @Override
    public void run() {
        System.out.println("公交车");
    }
}

public class App
{
      public static void main(String[] args) {
             System.out.println("*************************");
             System.out.println("请选择车辆:");
             System.out.println("1、小汽车");
             System.out.println("2、公交车");
             Scanner in=new Scanner(System.in);
             int choice=in.nextInt();

             System.out.println("*************************");
             System.out.println("请选择道路:");
             System.out.println("1、水泥路");
             System.out.println("2、沥青路");
             int choice2=in.nextInt();


             if(choice==1) {
                     switch(choice2) {

                             case 1:{
                                     RefinedVehicle vehicle=new Car(new Cement());
                                     vehicle.chooseWay("小汽车");
                                 }break;
                             case 2:{
                                     RefinedVehicle vehicle2=new Car(new AsphaltRoad());
                                     vehicle2.chooseWay("小汽车");
                                 }break;

                         }
                 }else if(choice==2) {
                    switch(choice2) {
                         case 1:{
                                 RefinedVehicle vehicle=new Bus(new Cement());
                                 vehicle.chooseWay("公交车");
                             }break;
                         case 2:{
                                 RefinedVehicle vehicle2=new Bus(new AsphaltRoad());
                                 vehicle2.chooseWay("公交车");
                             }break;

                     }
                 }
         }
}

 

posted @ 2024-11-15 11:12  伐木工熊大  阅读(4)  评论(0)    收藏  举报