2012-02-03 50 views
1

我目前正在將應用程序重構爲多個類以嘗試實現單一責任原則;然而,原始龐大類中的許多方法爲其業務邏輯使用一個通用的「元數據」對象(綁定爲類屬性)。通用對象在許多其他類共享

例如:

if($this->metadata->applyTracking) { 
// perform tracking logic 
} 

當我分離這些類時,我正在考慮兩種選擇:

  1. 傳遞該對象的類的特定的方法,在逐案(可以是許多次發生)。
  2. 將此對象添加爲類屬性(許多類將注入此屬性)。
  3. 使得該對象作爲一個Singleton(我警惕這種方法,因爲它可以共享相同的回退爲全局)

任何意見,哪條路徑服用?

回答

1

如果你在你的代碼中有繼承,你可以考慮把它分配爲基類中的成員並將實例公開爲受保護的變量。

Singleton實際上更多的是關於類是否應該一次只在內存中存在一個實例,或者如果您將多次實例化類。

0

很難肯定地說不知道如何使用對象,但我可能會建議有一個基類來定義所需的屬性,然後在需要訪問的任何後續類中繼承該基類對這些屬性。

quickshiftin只是打了我一拳雖然,哈哈。