我有一个从其他类的层次结构构建的类,我创建了一堆看起来相同的类,而不是类名
例如
class Class1 extends BaseClass
{
public function __construct()
{
parent::__construct();
}
}
class Class2 extends BaseClass
{
public function __construct()
{
parent::__construct();
}
}
class Class3 extends BaseClass
{
public function __construct()
{
parent::__construct();
}
}
但我意识到(希望是合理的)我可以使用工厂模式创建Class [1-3],只需传递一个类名并让工厂返回其中一个类。这将需要更少的代码,因此更易于维护。另外,如果我想这样做,你会建议如何实施:
class Class4 extends AnotherBaseClass
{
public function __construct()
{
parent::__construct();
}
}
请注意,类4扩展了另一个基类,但它与AnotherBaseClass保存的一小部分信息完全相同。
现在我在想这样的事情(我的想法在这一点上模糊不清):
//我把重复的代码放在哪里
class Skeleton extends BaseClass
{
public function __construct()
{
parent::__construct();
}
}
class ClassFactory
{
public function __construct( $className , $classType )
{
<pseudocode>
Class5 = new $className
???and some how make $className extend $classType ???
return class5
</pseudocode>
}
}
工厂模式是否是正确答案?
干杯!
答案 0 :(得分:0)
是 - 工厂模式是正确的答案。此外,您还可以查看Abstract Factory,特别是您提到的场景,其中您的某些类将具有不同的属性,并且可能派生自其他一些基类。