Если бы я нарисовал следующее на диаграмме uml, как бы выглядела связь между фабрикой и классами Validator, и являются ли классы MyObject и YourObject классами Factory?
class Factory {
public function create($data) {
if ($data['type'] === 'myType') {
return new MyObject(new ValidatorA());
} else {
return new YourObject(new ValidatorB());
}
}
}
interface Validator{
public function validate();
}
class ValidatorA implements Validator
{
public function validate() {
}
}
class ValidatorB implements Validator
{
public function validate() {
}
}
class MyObject() {
public function __construct(Validator $validator) {
}
}class YourObject() {
public function __construct(Validator $validator) {
}
}
Поскольку у вас нет клиента, шаблон фабрики является неполным и будет выглядеть так:
Полная фабрика выглядит так:
Других решений пока нет …