- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
class Order_OrderProcessorBuilder
{
/**
* @param $processorName
* @return Order_Abstract_OrderAbstract
*/
private static function createOrderProcessor($processorName)
{
$processorClassName = 'Order_Types_'.ucfirst($processorName);
return new $processorClassName;
}
/**
* @param $builderName
* @param Order_Abstract_OrderAbstract $orderProcessor
* @return Order_Abstract_BuilderAbstract
*/
private static function createOrderBuilder($builderName, Order_Abstract_OrderAbstract $orderProcessor)
{
$builderClassName = 'Order_Builders_'.ucfirst($builderName);
return new $builderClassName($orderProcessor);
}
/**
* @param Order_Abstract_BuilderAbstract $orderBuilder
* @return Order_Director
*/
private static function createDirectorClass(Order_Abstract_BuilderAbstract $orderBuilder)
{
return new Order_Director($orderBuilder);
}
/**
* @param $orderTypeName
* @return Order_Abstract_OrderAbstract
*/
public static function build($orderTypeName)
{
/** @var Order_Abstract_OrderAbstract $orderProcessor */
$orderProcessor = self::createOrderProcessor($orderTypeName);
/** @var Order_Abstract_BuilderAbstract $orderBuilder */
$orderBuilder = self::createOrderBuilder($orderTypeName, $orderProcessor);
$director = self::createDirectorClass($orderBuilder);
$director->construct();
return $orderBuilder->getResult();
}
}
Вот такая у нас есть прослойка, которая работает с паттероном "строитель", честно говоря недавно понял зачем она нужна, не знаю.. Как вам решение? Код не мой
OrderProcessorBuilder
Order Builder,
create Processor
Order Builder,
do construct
Order Builder,
create Director
Order Builder,
get result
Order_Abstract_OrderAbstract
При чтении этого комментария у меня случилась ошибка компиляции.
Пусть
Тогда
Отчего же, давайте введём формализм усложним. Для удобства заменим доллар трансформацией deref : Ref -> Ref, возвращающей ссылку на область памяти, соответствующую имени, содержащемуся во входной ссылке. Транформация не определена, если во входной ссылке находится не строка.
Определим операцию * как композицию функций. Нетрудно доказать, что композиция функций ассоциативна. Это означает, что скобки в выражениях композиции можно ставить как угодно.
Итого, три бакса это:
1) три бакса
2) 1 бакс + 2 бакса
3) 2 бакса + 1 бакс
4) 1 бакс + 1 бакс + 1 бакс
исключительно ради лулзов, разумеется
1. Научись отвечать за свой код.