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; } } } }