Maison  >  Article  >  développement back-end  >  Explication détaillée et cas du mode commande php

Explication détaillée et cas du mode commande php

墨辰丷
墨辰丷original
2018-05-16 13:55:441575parcourir

Cet article présente principalement l'explication détaillée et les cas du mode commande PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Le modèle de commande (Command) est un modèle de conception très couramment utilisé
Son essence est d'encapsuler les commandes, de séparer la responsabilité de l'émission des commandes et la responsabilité de l'exécution des commandes, et de réduire le degré de couplage entre les objets. , de nouvelles commandes peuvent être facilement ajoutées au système.

L'avantage couramment utilisé du mode commande est qu'il peut complètement découpler l'expéditeur et le destinataire de la requête, et le découplage du système est le but ultime du système.
Après découplage, certaines méthodes de certains objets sont appelées sans que l'on sache qui est le destinataire de la requête.

L'intelligence artificielle se développe rapidement dans l'environnement de l'Internet des objets. De nos jours, les lumières intelligentes peuvent être facilement contrôlées en se connectant simplement à un téléphone portable. Elles peuvent être facilement allumées et éteintes en position couchée. hiver.

<?php  
  
header("Content-Type:text/html;charset=utf-8");  
  
require_once "Command.php";  
  
// 智能灯  
$lamp = new Lamp();   
  
// 开灯命令  
$on = new onCommand($lamp);  
// 关灯命令  
$off = new offCommand($lamp);  
  
// 控制器类  请求者 不用知道对象是谁  
$_c = new Control($on,$off);  
  
$_c->turnOn();  // 开灯方法  
$_c->turnOff(); // 关灯方法
<?php  
// 智能灯类  
Class Lamp  
{  
    /** 
     * 开灯方法 
     * @access public 
     */  
    public function TurnOn()  
    {  
        echo "已帮您打开智能灯<br/>";  
    }  
  
    /** 
     * 关灯方法 
     * @access public 
     */  
    public function TurnOff()  
    {  
        echo "已帮您关闭智能灯<br/>";  
    }  
}  
  
// 命令抽象总类  
abstract Class ICommand  
{  
  
    /** 
     * 抽象执行方法 
     * @access public 
     */  
    abstract public function Execute();  
}  
  
// 开灯命令  
Class onCommand extends ICommand  
{  
    /** 
     * 智能灯对象 
     * @var object private 
     */  
    private $_lamp;  
  
    /** 
     * 构造函数 
     * @access public 
     * @param  object  $lamp 智能灯对象 
     */  
    function __construct($lamp)  
    {  
        $this->_lamp = $lamp;  
    }  
  
    /** 
     * 开灯执行方法 
     * @access public 
     */  
    function Execute()  
    {  
         $this->_lamp->TurnOn();  
    }  
}  
  
// 关灯命令  
Class offCommand extends ICommand  
{  
    /** 
     * 智能灯对象 
     * @var object private 
     */  
    private $_lamp;  
  
    /** 
     * 构造函数 
     * @access public 
     * @param  object  $lamp 智能灯对象 
     */  
    function __construct($lamp)  
    {  
        $this->_lamp = $lamp;  
    }   
  
    /** 
     * 关灯执行方法 
     * @access public 
     */  
    function Execute()  
    {  
        $this->_lamp->TurnOff();  
    }     
}  
  
// 遥控器类  
Class Control  
{  
    /** 
     * 开灯命令对象 
     * @var object private 
     */  
    private $_on;  
  
    /** 
     * 关灯命令对象 
     * @var object private 
     */  
    private $_off;  
  
    /** 
     * 构造函数 
     * @access public 
     * @param  object  $on 开灯对象 
     * @param  object  $off 关灯对象 
     */   
    function __construct($on,$off)  
    {  
        $this->_on = $on;  
        $this->_off = $off;  
    }  
  
    /** 
     * 开灯函数 
     * @access public 
     */  
    function turnOn()  
    {  
        $this->_on->Execute();  
    }  
  
    /** 
     * 关灯函数 
     * @access public 
     */  
    function turnOff()  
    {  
        $this->_off->Execute();  
    }  
}

Recommandations associées :

Concept du modèle de commande JS et analyse de son utilisation

Modèle de commande du modèle de conception JS Explication détaillée

Concept de modèle de commande JS et partage d'utilisation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn