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 楼答案
我不确定你减少对象之间耦合的确切意思,但你的问题在行为上似乎是创造性的,因此使用一种创造性的设计模式,名为Factory design Pattern,对我来说似乎是一个明智的选择
根据您的情况,您可以创建一个名为
'Vehicle'
的接口。然后为每个开关案例创建类,比如Boat, Ship, Truck
等等。这些具体的类将实现interface Vehicle
。接口可以有move()
等未实现的方法,具体的类将在其中为诸如航行、巡航、划桨、飞行等方法提供自定义实现这样,它们将耦合最少且相互独立
要了解有关工厂设计模式的更多信息,请查看以下内容: https://refactoring.guru/design-patterns/factory-method