Patrones de diseño PHP Ed - Modo de comando

Benpian ejemplo por comer en un restaurante, tienes que ir de un restaurante a la carta, ficha camarero cuando el pedido, el registro camarero para completar la lista de los chefs, cocineros cocinar.

/**
 * Interface Command 命令角色
 */
interface Command
{
    /**
     * @return mixed 执行方法
     */
    public function execute();
}

/**
 * Class ConcreteCommand 具体命令类,执行具体的行为:厨师
 */
class ConcreteCommand implements Command
{
    /**
     * @var Receiver 用于存放Receiver类
     */
    private $_receiver;

    public function __construct(Receiver $receiver)
    {
        $this->_receiver = $receiver;
    }

    public function execute()
    {
        // 厨师一顿操作后,终于完成了
        $complete = true;

        if ($complete == true) {
            $card = '食屎啦你'; // 厨师为了你给他带来了今天大汗淋漓的工作,为了表示感谢,送出了一张卡片
            $this->_receiver->action($this->_receiver->_name, $card); // 菜做好了,通知服务员上菜
        } else {
            echo '滚你丫的别BB,我还没想出来怎么做';
        }
    }
}

/**
 * Class Receiver 接收者角色:服务员
 */
class Receiver
{
    /**
     * @var string 服务员记录了菜名
     */
    public $_name;

    public function __construct($name)
    {
        $this->_name = $name;
    }

    public function action($name = null, $card = null) // 这个方法是厨师那边调用的
    {
        echo '服务员上菜: ' . $name;
        if (!empty($card)) {
            echo "<br>$card";
        }
    }
}

/**
 * Class Invoker 请求者角色:点餐的客人,你
 */
class Invoker
{
    /**
     * @var Command 存放ConcreteCommand类
     */
    private $_command;

    public function __construct(Command $command)
    {
        $this->_command = $command;
    }
    public function action()
    {
        $this->_command->execute();
    }
}

$receiver = new Receiver('满汉全席'); // 你点了满汉全席,服务员(Receiver类)记录了菜名。
$command = new ConcreteCommand($receiver); // 你看着服务员拿着单子进了厨房,空着手出来,厨师拿到了单子。
$invoker = new Invoker($command); // 你确定厨房已有你这个单子了。
$invoker->action(); // 因为你之前还有朋友没到,朋友到了后你跟服务员说可以做菜了。

Escenario:
La persona con un ejecutor de comandos completamente desacoplado.
Visible, se encuentra en plena interacción con el camarero, que los cocineros no tienen que tubo Sí.

De búsqueda de Internet una gran cantidad de información, no he encontrado este modo tenue, o no soy yo la comprensión?

Ocho abajo, creo que es fácil de entender, pero para escribir el papel, muy duro. La clave es que poca gente ve. . Por lo tanto, los patrones de diseño más paradas. .

Publicados 112 artículos originales · ganado elogios 75 · vistas 130 000 +

Supongo que te gusta

Origin blog.csdn.net/weikaixxxxxx/article/details/91128307
Recomendado
Clasificación