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

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}")