軟體中常會遇到需要描述相似的東西:初期可用型別區分,但更好的做法是使用子類別。

Replace Type Code with Subclasses
這樣可善用多型,也可讓某些欄位或函式限縮在特定子類別中。
要替換的對象是整體類別還是當中型別?
我們可先將型別換成物件類別,再對其用此手法。
# Before
class Employee:
def __init__(self, name, type_code):
self.name = name
self.type_code = type_code
def get_role(self):
if self.type_code == 0:
return "Manager"
elif self.type_code == 1:
return "Engineer"
# After
class Employee:
def __init__(self, name):
self.name = name
class Manager(Employee):
def get_role(self):
return "Manager"
class Engineer(Employee):
def get_role(self):
return "Engineer"