У меня есть класс, построенный из иерархии других классов, и я создал группу тех же классов, которые выглядели одинаково, кроме имени класса
, например
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>
}
}
Является ли фабричный шаблон правильным ответом?
Приветствия!