denisOg
Новичок
Фабричный метод порождает объекты.
Постараюсь не писать много кода, думаю многие меня поймут на словах)
Реализации фабричного метода:
Использование:
Получается я не избавился от условного оператора? Или я что то не так понял?)
Постараюсь не писать много кода, думаю многие меня поймут на словах)
Реализации фабричного метода:
- Есть фабричный класс со статическим фабричным методом. При вызове метода, передаю какой то параметр. Внутри метода происходит условный поиск и мне возвращают
PHP:
return new SomeClass();
Код:............. $type = 'post'; ........ $post = FactoryClass::create($type); .......................
- Эту реализацию часто встретил в интернете. Она реализована с интерфейсам. Для каждого возвращаемого класса создается свой фабричный класс, который возвращает только объект одного класса. Все эти фабричные классы имеют один интерфейс. А также все классы, которые возвращаются, также имеют общий интерфейс. Реализация (из википедии
):
Код:<?php interface Product{ public function GetName(); } class ConcreteProductA implements Product{ public function GetName() { return "ProductA"; } } class ConcreteProductB implements Product{ public function GetName() { return "ProductB"; } } interface Creator{ public function FactoryMethod(); } class ConcreteCreatorA implements Creator{ public function FactoryMethod() { return new ConcreteProductA(); } } class ConcreteCreatorB implements Creator{ public function FactoryMethod() { return new ConcreteProductB(); } } ?>
Использование:
Код:
.............
$type = 'productA';
........
if($type == 'productA') {
$creator = new ConcreteCreatorA();
}
if($type == 'productB') {
$creator = new ConcreteCreatorB();
}
$post = $creator->FactoryMethod();
.......................