1. 程式人生 > >裝飾器與耦合聚合

裝飾器與耦合聚合

聚合 應用 低耦合 數據結構 不同 一個 獨立 特性 通過

裝飾器與耦合聚合

裝飾器

  1. 裝飾器本質也是一個一參高階函數,參數也是函數,構成了函數的嵌套,再利用閉包特性將內外層函數的作用域聯系起來。
  2. 主要用於函數非核心功能的增加,使原函數的功能增強,應用範圍更廣,方式更靈活,將核心功能和非核心功能解耦。
  3. 所以當需要對核心功能的函數做附屬功能增強時,但又不想因為附屬功能的修改影響到核心功能,降低各個功能的耦合度,首選使用裝飾器。

耦合度、聚合度

1.”程序=數據結構+算法“這句話廣為人知,而“程序的要求是高聚合、低耦合”這句話也具有同等的重要性。
2.耦合和聚合一直都以“高聚合,低耦合”的形式一同出現,聚合是一個模塊內部各成分之間相關聯成都的度量,耦合是模塊之間

相關聯程度的度量。
3.對於聚合,它是對一個模塊(最低級狹義的就是函數)內部的度量,所以常稱內聚。一般來說,要做到高聚合,一個模塊應該只能完成一個獨立的功能,模塊內部不存在與該功能無關的操作與狀態。
4.對於耦合,它主要指不同對象之間相互管理的程度,模塊之間的關聯越少越好。如果一個對象過多的依賴於其他對象來完成自己的工作,則不僅使該對象的可理解性下降,而且還會增加測試、修改的難度,同事降低了類的可重用性和可移植性。
對象不可能是完全孤立的,當連個對象必須相互聯系時,應該通過類的公共接口實現耦合,不應該依賴於類的具體實現細節。

綜上

裝飾器這個類,給核心功能函數和增強功能函數提供了一個公共的接口來耦合,但各個功能之間是不相互依賴、解耦的,使調試和修改更方便,代碼的健壯性也提高了,應盡可能的多使用。

裝飾器與耦合聚合