2023/10/14 每日总结

今天完成了设计模式实验九

实验9:桥接模式

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

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

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

 

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

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

类图

 

package org.test09;

public class AsphaltRoad extends Road{
    public void drive() {
        System.out.println("在沥青路上");
        this.getVehicle().bedrive();
    }
}
package org.test09;

public class Bus implements Vehicle{
    public void bedrive(){
        System.out.println("公交车在行使");
    }
}
package org.test09;

public class Car implements Vehicle{
    public void bedrive(){
        System.out.println("小汽车在行使");
    }
}
package org.test09;

public class CementRoad extends Road{
    @Override
    public void drive() {
        System.out.println("在混凝土路上");
        this.getVehicle().bedrive();
    }
}
package org.test09;

import java.util.Scanner;

public class Client {
    public static void main(String[] args) {
        Vehicle vehicle = null;
        CementRoad cementRoad=null;
        System.out.println("请你输入要走的车和路 1.car走水泥路2.car走沥青路3.bus走水泥路4.bus走沥青路");
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        if(next.equals("1")){
            vehicle = new Car();
            CementRoad cementRoad1=new CementRoad();
            cementRoad1.setVehicle(vehicle);
            cementRoad1.drive();
        } else if (next.equals("2")) {
            vehicle = new Car();
            AsphaltRoad asphaltRoad=new AsphaltRoad();
            asphaltRoad.setVehicle(vehicle);
            asphaltRoad.drive();
        } else if (next.equals("3")) {
            vehicle = new Bus();
            CementRoad cementRoad1=new CementRoad();
            cementRoad1.setVehicle(vehicle);
            cementRoad1.drive();
        } else if (next.equals("4")) {
            vehicle = new Bus();
            AsphaltRoad asphaltRoad=new AsphaltRoad();
            asphaltRoad.setVehicle(vehicle);
            asphaltRoad.drive();
        }else {
            System.out.println("不存在");
        }

    }
}
package org.test09;

public abstract class Road {
    private Vehicle vehicle;

    public Vehicle getVehicle() {
        return vehicle;
    }

    public void setVehicle(Vehicle vehicle) {
        this.vehicle = vehicle;
    }
    public abstract void drive();
}
package org.test09;

public interface Vehicle {
    void bedrive();
}

 

posted @ 2023-10-14 22:03  樱花开到我身边  阅读(9)  评论(0)    收藏  举报