複雜的條件邏輯很難理解,一種改善法是拆解成不同環境,用類別與多型會讓這種分解更明確。

Replace Conditional with Polymorphism
classDiagram
direction TB
class Vehicle {
<<abstract>>
+get_speed()
}
class Car {
+get_speed() 100
}
class Bicycle {
+get_speed() 20
}
class Boat {
+get_speed() 30
}
Vehicle <|-- Car
Vehicle <|-- Bicycle
Vehicle <|-- Boat
note for Vehicle "取代 if/switch 判斷<br/>每個子類別實作自己的邏輯"# Before
class Vehicle:
def __init__(self, vehicle_type):
self.vehicle_type = vehicle_type
def get_speed(self):
if self.vehicle_type == "car":
return 100
elif self.vehicle_type == "bicycle":
return 20
elif self.vehicle_type == "boat":
return 30
else:
return 0
# After
class Vehicle:
def get_speed(self):
return 0
class Car(Vehicle):
def get_speed(self):
return 100
class Bicycle(Vehicle):
def get_speed(self):
return 20
class Boat(Vehicle):
def get_speed(self):
return 30
car = Car()
print(f"Car speed: {car.get_speed()}")