【发布时间】:2011-03-20 03:43:53
【问题描述】:
我有一个从其他类的层次结构构建的类,并且我创建了一堆相同的类,除了类名之外看起来相同
例如
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>
}
}
工厂模式是正确的答案吗?
干杯!
【问题讨论】:
-
“我创建了一堆相同的类,除了类名之外看起来完全一样”——永远不要这样做。
标签: design-patterns factory-pattern