中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計模式之命令模式-使用命令模式實現遙控器及總結

發布時間:2020-08-11 19:08:59 來源:網絡 閱讀:402 作者:凱哥Java 欄目:編程語言

設計模式之命令模式-使用命令模式實現遙控器及總結

先來看看項目結構:
設計模式之命令模式-使用命令模式實現遙控器及總結

說明:

1:命令接口對象

2:電燈打開或關閉命令

3:音響打開或關閉命令

4:音響音量增加或減少命令

來源:凱哥Java(kaigejava)

電燈開或關代碼:

/**

  • Created by kaigejava on 2019/8/30.

  • 關燈的命令對象

*/

public class LightOffCommand implements ICommandInterface{

private LightAPI light;

public LightOffCommand(LightAPI light){

   this.light = light;

}

@Override

public void execute() {

   light.Off();

}

@Override

public void undo() {

   light.On();

}

}

增加音響音量的類:

/**

  • Created by kaigejava on 2019/8/30.

  • 給音響增加音量命令對象

*/

public class StereoAddVolCommand implements ICommandInterface{

private StereoAPI setreo;

public StereoAddVolCommand(StereoAPI stereo){

   this.setreo = stereo;

}

@Override

public void execute() {

   int vol=   setreo.GetVol();

   if(vol<11)

   {

       setreo.AddVolume(++vol);

   }

}

@Override

public void undo() {

   int vol=   setreo.GetVol();

   if(vol>0)

   {

       setreo.downVolume(--vol);

   }

}

}

命令模式總結:

1:內容

什么是命令模式?命令模式定義。參見上一篇

2:角色

invoker:調用者(如遙控器對象)

Command:命令接口或抽象類(如命令案例中命令接口)

received命令具體實現類(如電燈開對象、音響音量加/減對象)

3:執行順序

調用者-->接收者-->命令

4:使用場景

當行為的請求者與行為的實現者之間需要解耦的時候(如遙控器項目,請求者是遙控器,行動實現者是各個不同的家電設備),這種場景下可以使用

5:何時使用

在某些場合,比如要對行為進行"記錄、撤銷/重做、事務"等處理,這種無法抵御變化的緊耦合是不合適的。在這種情況下,如何將"行為請求者"與"行為實現者"解耦?將一組行為抽象為對象,可以實現二者之間的松耦合。在某些場合,比如要對行為進行"記錄、撤銷/重做、事務"等處理,這種無法抵御變化的緊耦合是不合適的。在這種情況下,如何將"行為請求者"與"行為實現者"解耦?將一組行為抽象為對象,可以實現二者之間的松耦合。

6:優缺點

優點:

1、降低了系統耦合度;

2、新的命令可以很容易添加到系統中去。

缺點:

使用命令模式可能會導致某些系統有過多的具體命令類。比如我們遙控器項目中就多了很多具體命令對象。

聯系凱哥--》凱哥Java(kaigejava)或凱哥個人博客:www.kaigejava.com 博客上私聊凱哥哦~

7:注意事項

系統需要支持命令的撤銷(Undo)操作和恢復(Redo)操作,也可以考慮使用命令模式

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

咸阳市| 海淀区| 佛冈县| 吉林市| 阳江市| 孝感市| 沁阳市| 宁陵县| 墨脱县| 尼玛县| 宣城市| 崇礼县| 江达县| 九寨沟县| 故城县| 额敏县| 积石山| 沙河市| 神池县| 湖南省| 拜城县| 洮南市| 高台县| 江源县| 海安县| 松滋市| 安龙县| 广元市| 崇信县| 吴堡县| 搜索| 普洱| 清水县| 平南县| 临海市| 柳林县| 永平县| 开平市| 鞍山市| 和政县| 老河口市|