我正在尋找一個基於對象類型實例化不同子類或使用子類的方法擴展Base類的架構解決方案。根據PHP中的對象類型實例化不同的類
舉個例子: 有一個基類用戶和幾個子類合作伙伴,客戶,主持人具有特定方法的自己的構造函數。 當我打電話
$user = new User($userid);
我想用戶類
class User
{
public function __construct($userid) {
self::initDB();
if ($this->isPartner()) {
//extend this class with the methods of "Partner" child class and run "Partner" class constructor
}
if ($this->isClient()) {
//extend this class with the methods of "Client" child class and run "Client" class constructor
}
if ($this->isModerator()) {
//extend this class with the methods of "Moderator" child class and run "Moderator" class constructor
}
}
}
要返回我的對象與所有取決於什麼樣的角色呢用戶有方法。
我知道我的邏輯被打破了某處,我提供的例子是錯誤的。但我現在看到的唯一解決方案是構建一個擁有所有角色所有方法的巨人類 - 這看起來像一團糟。
Lusitanian,謝謝你的回答! 所以我會怎樣創建)的用戶(或子女)的實例對象將被 1創建的UserManager類 2的實例)調用方法loadUserById它會返回一個正確的對象 看起來一樣的方式工廠模式(通過擁有類userManager有一個靜態方法)。但工廠模式看起來更短,更好。爲什麼更糟? –
UserManager不會是靜態類。它可以被實例化並且提供可擴展且易於單元測試的代碼,並且也與單一責任原則(OOP)保持一致。 – Lusitanian