有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java减少switch语句的耦合

private void initialiseVehicle(String vehicleName) {
    
    if (vehicleName == null) {
    } else {
        switch (vehicleName) {
        case "Boat":
            vehicle = new Boat("Apollo ");
            break;
        case "Ship":
            vehicle = new Ship("Cruizz");
            break;
        case "Truck":
            vehicle = new Truck("Ford F-650");
            break;
        case "Motorcycle":
            vehicle = new Motorcycle("Suzuki");
            break;
        case "Bus":
            vehicle = new Bus("Aero");
            break;
        case "Car":
            vehicle = new Car("BMW");
            break;
        case "Bicycle":
            vehicle = new Bicycle("A-bike");
            break;
        case "Helicopter":
            vehicle = new Helicopter("Eurocopter");
            break;
        case "Airplane":
            vehicle = new Airplane("BA");
            break;
        case "Tram":
            vehicle = new Tram("EdinburghTram");
            break;
        case "Train":
            vehicle = new Train("Virgin",4);
            break;
        }
    }

    
}

我已经将它从if-else语句编辑为switch,但我已经尝试通过这样做来减少CBO度量,并且想知道是否有任何方法可以减少耦合,如果需要,我可以提供更多信息


共 (1) 个答案

  1. # 1 楼答案

    我不确定你减少对象之间耦合的确切意思,但你的问题在行为上似乎是创造性的,因此使用一种创造性的设计模式,名为Factory design Pattern,对我来说似乎是一个明智的选择

    根据您的情况,您可以创建一个名为'Vehicle'的接口。然后为每个开关案例创建类,比如Boat, Ship, Truck等等。这些具体的类将实现interface Vehicle。接口可以有move()等未实现的方法,具体的类将在其中为诸如航行、巡航、划桨、飞行等方法提供自定义实现

    这样,它们将耦合最少且相互独立

    要了解有关工厂设计模式的更多信息,请查看以下内容: https://refactoring.guru/design-patterns/factory-method Factory Method/Factory Design Pattern