我正在寻找一个基于对象类型实例化不同子类或使用子类的方法扩展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