使用隱藏委託有其代價:為封裝類別加入方法時,外部類別也得新增簡單的委託方法。

Remove Middle Man
我們不需永遠忍受這類轉傳機制:隨著程式碼變化,我們也可視情況再度移除中間人。
# Before
class Department:
def __init__(self, manager):
self.manager = manager
class Person:
def __init__(self, name, department):
self.name = name
self.department = department
def get_manager(self):
return self.department.manager
# After
class Department:
def __init__(self, manager):
self.manager = manager
class Person:
def __init__(self, name, department):
self.name = name
self.department = department
# 直接存取
person = Person("Bob", department)
print(f"Manager: {person.department.manager}")