- 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();
}
}
Вот такая у нас есть прослойка, которая работает с паттероном "строитель", честно говоря недавно понял зачем она нужна, не знаю.. Как вам решение? Код не мой
Sh1tM4ker 16.09.2015 12:35 # +6
OrderProcessorBuilder
Order Builder,
create Processor
Order Builder,
do construct
Order Builder,
create Director
Order Builder,
get result
roman-kashitsyn 16.09.2015 12:43 # +2
Order_Abstract_OrderAbstract
roman-kashitsyn 16.09.2015 12:44 # +1
При чтении этого комментария у меня случилась ошибка компиляции.
proweber1 16.09.2015 13:05 # −1
proweber1 16.09.2015 13:06 # −1
roman-kashitsyn 16.09.2015 14:26 # +1
Stallman 17.09.2015 00:15 # +2
3_14dar 17.09.2015 09:41 # 0
Stallman 17.09.2015 09:47 # 0
3_14dar 17.09.2015 12:35 # +1
inkanus-gray 17.09.2015 13:36 # +1
3_14dar 17.09.2015 15:38 # 0
inkanus-gray 17.09.2015 16:29 # +1
Пусть
Тогда
guest 18.09.2015 12:11 # −1
roman-kashitsyn 18.09.2015 12:29 # +3
Отчего же, давайте введём формализм усложним. Для удобства заменим доллар трансформацией deref : Ref -> Ref, возвращающей ссылку на область памяти, соответствующую имени, содержащемуся во входной ссылке. Транформация не определена, если во входной ссылке находится не строка.
Определим операцию * как композицию функций. Нетрудно доказать, что композиция функций ассоциативна. Это означает, что скобки в выражениях композиции можно ставить как угодно.
Итого, три бакса это:
1) три бакса
2) 1 бакс + 2 бакса
3) 2 бакса + 1 бакс
4) 1 бакс + 1 бакс + 1 бакс
исключительно ради лулзов, разумеется
Elvenfighter 16.09.2015 23:52 # 0
1. Научись отвечать за свой код.
guest 18.09.2015 16:13 # 0
blackray 25.08.2021 02:08 # 0