java 命令模式

UML:

1.png

定義:

將某個請求(開機(jī),關(guān)機(jī)氮惯,換臺)封裝成一個對象(TurnOnCommand,TurnOffCommand,ChangeChannelCommand)厌均,從而可用不同的請求實(shí)現(xiàn)客戶端的參數(shù)化( Control control = new Control(on, off, changechannel))

本質(zhì):

將發(fā)出請求的對象(client)請求的真正執(zhí)行者(mytv)解耦棺弊。

角色:

Command: 命令接口,聲明執(zhí)行操作模她。
ConcreateCommand:實(shí)現(xiàn)commmand 命令持有真正的執(zhí)行者侈净。將執(zhí)行者與命令綁定畜侦。TurnOffCommand
Client:創(chuàng)建命令設(shè)定執(zhí)行者旋膳。Client
Invoker:執(zhí)行命令請求验懊。Control
Receiver:命令的執(zhí)行者义图。mytv
(1)命令真正的執(zhí)行者

public class MyTV {
    public int channel = 0;

    public void turnOff() {
        System.out.println("mytv is turn off!!");
    }

    public void turnOn() {
        System.out.println("mytv is turn on!!");
    }

    public void changeChannel(int channel) {
        this.channel = channel;
        System.out.println("now tv chaannel is " + channel + "!!");
    }
}

(2)命令接口

public interface Command {
    public void execute();
}

(3)命令實(shí)現(xiàn)類

public class implements Command {
    private MyTV myTV;

    public TurnOffCommand(MyTV myTV) {
        this.myTV = myTV;
    }

    @Override
    public void execute() {
        myTV.turnOff();
    }
}
public class TurnOnCommand implements Command {
    private MyTV myTV;

    public TurnOnCommand(MyTV myTV) {
        this.myTV = myTV;
    }

    @Override
    public void execute() {
        myTV.turnOn();
    }
}
public class ChangeChannelCommand implements Command {
    private MyTV myTV;
    private int  channel;

    public ChangeChannelCommand(MyTV myTV, int channel) {
        this.myTV = myTV;
        this.channel = channel;
    }

    @Override
    public void execute() {
        myTV.changeChannel(channel);
    }
}

(3)控制器

public class Control {
    public Command oncommand, offcommand, changecommand;

    public Control(Command oncommand, Command offcommand, Command changecommand) {
        this.oncommand = oncommand;
        this.offcommand = offcommand;
        this.changecommand = changecommand;
    }

    public void turnOn() {
        this.oncommand.execute();

    }

    public void turnOff() {
        this.offcommand.execute();

    }

    public void changeChannel() {
        this.changecommand.execute();
    }
   }

(4)測試類

public class Client {
    public static void main(String[] args) {
        //接受者
        MyTV myTV = new MyTV();
        //開機(jī)命令
        Command on = new TurnOnCommand(myTV);
        //關(guān)機(jī)命令
        Command off = new TurnOffCommand(myTV);
        //換臺
        Command changechannel = new ChangeChannelCommand(myTV, 9);
        //命令控制對象
        Control control = new Control(on, off, changechannel);
        control.turnOn();
        control.turnOff();
        control.changeChannel();

    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痛垛,一起剝皮案震驚了整個濱河市匙头,隨后出現(xiàn)的幾起案子蹂析,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異借帘,居然都是意外死亡肺然,警方通過查閱死者的電腦和手機(jī)际起,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門校翔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來展融,“玉大人告希,你說我怎么就攤上這事燕偶≈该矗” “怎么了榴鼎?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵盗似,是天一觀的道長赫舒。 經(jīng)常有香客問我接癌,道長,這世上最難降的妖魔是什么缨叫? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮湖雹,結(jié)果婚禮上摔吏,老公的妹妹穿的比我還像新娘征讲。我一直安慰自己诗箍,他們只是感情好滤祖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布埂材。 她就那樣靜靜地躺著俏险,像睡著了一般扬绪。 火紅的嫁衣襯著肌膚如雪挤牛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天竣蹦,我揣著相機(jī)與錄音,去河邊找鬼。 笑死纲菌,一個胖子當(dāng)著我的面吹牛翰舌,可吹牛的內(nèi)容都是我干的椅贱。 我是一名探鬼主播庇麦,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼山橄,長吁一口氣:“原來是場噩夢啊……” “哼航棱!你這毒婦竟也來了饮醇?” 一聲冷哼從身側(cè)響起驳阎,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜘腌,失蹤者是張志新(化名)和其女友劉穎饵隙,沒想到半個月后金矛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勺届,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榕酒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年想鹰,在試婚紗的時候發(fā)現(xiàn)自己被綠了辑舷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖乔妈,靈堂內(nèi)的尸體忽然破棺而出路召,到底是詐尸還是另有隱情波材,我是刑警寧澤廷区,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布埠帕,位于F島的核電站玖绿,受9級特大地震影響斑匪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庶橱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一苏章、第九天 我趴在偏房一處隱蔽的房頂上張望馍乙。 院中可真熱鬧丝格,春花似錦显蝌、人聲如沸曼尊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趾唱。三九已至甜癞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒸辆,已是汗流浹背吁朦。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工逗宜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纺讲,地道東北人熬甚。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓乡括,卻偏偏與公主長得像诲泌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哀蘑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容