成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

php設(shè)計(jì)模式之命令模式

niuxiaowei111 / 2046人閱讀

摘要:命令模式概念將請(qǐng)求封裝成對(duì)象,以便使用不同的請(qǐng)求隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象。命令模式也支持可撤銷(xiāo)的操作。從而實(shí)現(xiàn)行為請(qǐng)求者與行為實(shí)現(xiàn)者的松耦合。

命令模式概念

將請(qǐng)求封裝成對(duì)象,以便使用不同的請(qǐng)求、隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象。命令模式也支持可撤銷(xiāo)的操作。
從而實(shí)現(xiàn)“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”的松耦合。

命令模式成員

抽象命令(Command):定義命令的接口,聲明執(zhí)行的方法(execute、undo)
具體命令(ConcreteCommand):命令接口實(shí)現(xiàn)對(duì)象,通常會(huì)持有接收者,并調(diào)用接收者的功能來(lái)完成命令要執(zhí)行的操作
接收者(Receiver):執(zhí)行命令的對(duì)象
請(qǐng)求者(Invoker):調(diào)用命令對(duì)象執(zhí)行請(qǐng)求

類(lèi)圖

實(shí)例
light = $light;
    }

    public function execute()
    {
        $this->light->on();
    }

    public function undo()
    {
        $this->light->off();
    }
}

/**
 * 具體命令(ConcreteCommand)
 * Class LightOff
 */
class LightOff implements Command{
    private $light;

    public function __construct(Light $light)
    {
        $this->light = $light;
    }

    public function execute()
    {
        $this->light->off();
    }

    public function undo()
    {
        $this->light->on();
    }
}

/**
 * 請(qǐng)求者(Invoker)
 * Class Control
 */
class Control{

    protected $object;

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

    public function exec(){
        $this->object->execute();
    }

    public function undo(){
        $this->object->undo();
    }

}

$light = new Light();
$light_on = new LightOn($light);
$control = new Control($light_on);
$control->exec();
echo "
"; $control->undo();
設(shè)計(jì)原則

1.封裝變化
2.多用組合,少用繼承
3.針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程
4.為交互對(duì)象之間松耦合設(shè)計(jì)而努力
5.類(lèi)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉
6.依賴(lài)抽象、不要依賴(lài)具體類(lèi)

總結(jié)

1.命令模式將發(fā)出請(qǐng)求的對(duì)象和執(zhí)行請(qǐng)求的對(duì)象解耦
2.在被解耦的兩者之間通過(guò)命令對(duì)象進(jìn)行溝通。命令對(duì)象封裝了接收者和一個(gè)或一組動(dòng)作
3.調(diào)用者通過(guò)調(diào)用命令對(duì)象的execute方法發(fā)出請(qǐng)求,這樣使得接受者的動(dòng)作被調(diào)用
4.調(diào)用者可以接受命令當(dāng)做參數(shù),甚至在運(yùn)行時(shí)動(dòng)態(tài)的進(jìn)行
5.命令可以支持撤銷(xiāo),做法實(shí)現(xiàn)一個(gè)undo的方法來(lái)回到execute被執(zhí)行前的狀態(tài)
6.命令也可以用來(lái)實(shí)現(xiàn)日志、事物系統(tǒng)、隊(duì)列

參考文獻(xiàn)《head first設(shè)計(jì)模式》

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22559.html

相關(guān)文章

  • php 設(shè)計(jì)模式工廠(chǎng)模式、單例模式、注冊(cè)樹(shù)模式

    摘要:的設(shè)計(jì)模式有很多種,本文取最簡(jiǎn)單的三種模式工廠(chǎng)模式單例模式和注冊(cè)樹(shù)模式進(jìn)行簡(jiǎn)單的講解。文件創(chuàng)建完后,咱們回到單元測(cè)試文件文件再執(zhí)行一下單元測(cè)試命令發(fā)現(xiàn),也能返回成功,這樣的話(huà)我們就能很方便的修改任何驅(qū)動(dòng)了。 php 設(shè)計(jì)模式之工廠(chǎng)模式、單例模式、注冊(cè)樹(shù)模式 在軟件工程中,創(chuàng)建型設(shè)計(jì)模式承擔(dān)著對(duì)象創(chuàng)建的職責(zé),嘗試創(chuàng)建適合程序上下文的對(duì)象,對(duì)象創(chuàng)建設(shè)計(jì)模式的產(chǎn)生是由于軟件工程設(shè)計(jì)的問(wèn)題,具...

    liangzai_cool 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式命令模式

    摘要:概念將來(lái)自客戶(hù)端的請(qǐng)求傳入一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶(hù)進(jìn)行參數(shù)化。用于行為請(qǐng)求者與行為實(shí)現(xiàn)者解耦,可實(shí)現(xiàn)二者之間的松耦合,以便適應(yīng)變化。角色命令在一個(gè)方法調(diào)用之上定義一個(gè)抽象具體的命令一個(gè)操作的實(shí)現(xiàn)調(diào)用者引用實(shí)例作為它可用的操作。 概念 將來(lái)自客戶(hù)端的請(qǐng)求傳入一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶(hù)進(jìn)行參數(shù)化。用于行為請(qǐng)求者與行為實(shí)現(xiàn)者解耦,可實(shí)現(xiàn)二者之間的松耦合,以便適應(yīng)變化...

    scq000 評(píng)論0 收藏0
  • PHP回顧IO

    摘要:命令行時(shí)返回值為,標(biāo)準(zhǔn)輸入輸出均指向終端可用進(jìn)程號(hào)查看。會(huì)在腳本執(zhí)行完畢后關(guān)閉三個(gè)流,無(wú)需用戶(hù)手動(dòng)關(guān)閉。與遠(yuǎn)程網(wǎng)址交互是一個(gè)請(qǐng)求和響應(yīng)的過(guò)程,其中細(xì)節(jié)可參考本人之前的文章回顧之請(qǐng)求和回顧之響應(yīng),也可參考協(xié)議的權(quán)威文檔。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) ses...

    happen 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶(hù)希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類(lèi) Collections 中大概有兩類(lèi)功能,第一類(lèi)是對(duì)容器接口對(duì)象進(jìn)行操作,第二類(lèi)是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶(hù)希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類(lèi) Collections 中大概有兩類(lèi)功能,第一類(lèi)是對(duì)容器接口對(duì)象進(jìn)行操作,第二類(lèi)是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<