繼承和多態性會影響類別的耦合度:繼承會增加耦合度,因為衍生類別依賴基底類別。多態性可以降低耦合度,因為物件可以透過虛擬函數和基底類別指標以一致的方式回應訊息。最佳實踐包括謹慎使用繼承、定義公共介面、避免在基底類別中新增資料成員,以及透過依賴注入解耦類別。實戰案例顯示如何使用多態性和依賴注入來降低銀行帳戶應用程式中的耦合度。
C++ 中繼承與多型對類別耦合度的影響
引言
繼承和多態性是C++ 中促進程式碼可重複使用和靈活性的關鍵概念。然而,它們也可能對類別的耦合度產生重大影響。
耦合度
耦合度衡量類別之間的依賴關係程度。高耦合度意味著類別之間密切相關,修改一個類別可能會影響另一個類別。
繼承和耦合度
繼承創建了父子類別之間的從屬關係。衍生類別依賴基底類,因為基底類別的任何變更都可能影響衍生類別。這種依賴關係增加了耦合度。
範例:
class Animal { public: virtual void speak(); }; class Dog : public Animal { public: void speak() override; }; class Cat : public Animal { public: void speak() override; };
Dog 和Cat
類別繼承自
類別。如果 Animal 類別的
speak 函數被修改,Dog
和 Cat
類別也需要修改。這種依賴性導致了高耦合度。 多態性和耦合度
多態性允許物件以一致的方式回應不同的訊息,即使它們屬於不同的類別。這可以透過虛擬函數和基底類別指標來實現。
範例:
class Shape { public: virtual double area(); }; class Rectangle : public Shape { public: double area() override; }; class Circle : public Shape { public: double area() override; }; int main() { Shape* shapes[] = {new Rectangle(), new Circle()}; for (Shape* shape : shapes) { cout << shape->area() << endl; } }
在這個範例中,
Rectangle 和Circle 類別都繼承自Shape
類別。
最佳實踐
為了降低耦合度,應遵循以下最佳實踐:謹慎使用繼承,僅在絕對必要時使用。
使用介面或抽象基底類別定義公共介面。
透過依賴注入技術解耦類別。
實戰案例:
class Account { public: virtual double getBalance(); }; class CheckingAccount : public Account { public: double getBalance() override; }; class SavingsAccount : public Account { public: double getBalance() override; }; class Customer { private: Account* account; public: Customer(Account* account) : account(account) {} double getBalance() { return account->getBalance(); } }; int main() { CheckingAccount checkingAccount; SavingsAccount savingsAccount; Customer checkingCustomer(&checkingAccount); Customer savingsCustomer(&savingsAccount); cout << checkingCustomer.getBalance() << endl; cout << savingsCustomer.getBalance() << endl; }
以上是C++ 中繼承和多態性如何影響類別的耦合度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!