日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

命令模式

系統(tǒng) 1922 0

命令模式(別名:動(dòng)作,事務(wù))

將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使用戶可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,心腹支持可撤銷的操作。


命令模式

Receiver(接收者):接收者是一個(gè)類的實(shí)例,該實(shí)例負(fù)責(zé)執(zhí)行與請(qǐng)求相關(guān)的操作。

Command(命令)接口:命令是一個(gè)接口,規(guī)定了用來封裝“請(qǐng)求”的若干個(gè)方法,比如execute()、undo()等方法.

ConcreteCommand(具體命令):是實(shí)例命令接口的類的實(shí)例。具體命令必須實(shí)現(xiàn)命令接口中的方法,比如execute()方法,使該方法封裝一個(gè)“請(qǐng)求”。

Invoker(請(qǐng)求者):是一個(gè)包含Command接口變量的類的實(shí)例。請(qǐng)求者中的Command接口的變量可以存放任何具體命令的引用。請(qǐng)求者負(fù)責(zé)調(diào)用具體命令,讓具體命令執(zhí)行那些封裝了“請(qǐng)求”的方法,比如execute()方法。

?

  • 使用
  1. 接收者(Receive)??? Company.java
            public class CompanyArmy{
        public void sneakAttack(){
            System.out.println("我們知道如何偷襲敵人,保證完成任務(wù)");
        }
    }
          
    ?
  2. 命令(Command)接口
            public interface Command {
    	public void execute();
    }
          
    ?
  3. 具體命令(ConcreteCommand)
            public class ConcreteCommand implements Command {
    
    	CompanyArmy army;//含有接收者的引用
    	ConcreteCommand(CompanyArmy army){
    		this.army = army;
    	}
    	public void execute() {//封裝著指揮官的請(qǐng)求
    		army.sneakAttack();
    	}
    
    }
          
    ?
  4. 請(qǐng)求者(Invoker)
            public class ArmySuperior {
    	Command command;
    	public void setCommand(Command command){
    		this.command = command;
    	}
    	public void startExecuteCommand(){//讓具體命令執(zhí)行execute方法
    		command.execute();
    	}
    }
          
    ?
  5. 模式的使用
            public class Main {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		//創(chuàng)建接收者
    		CompanyArmy ca = new CompanyArmy();
    		//創(chuàng)建具體命令并指定接收者
    		Command command = new ConcreteCommand(ca);
    		//創(chuàng)建命令的請(qǐng)求者
    		ArmySuperior commander = new ArmySuperior();
    		commander.setCommand(command);
    		commander.startExecuteCommand();
    	}
    
    }
          
  • 適合使用命令模式:
  1. 程序需要在不現(xiàn)時(shí)刻指定、排序和執(zhí)行請(qǐng)求
  2. 程序需要提供撤銷操作
  3. 程序需要支持宏操作?

命令模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 宽甸| 罗源县| 白城市| 任丘市| 黄石市| 永泰县| 卢氏县| 威信县| 赤城县| 东兰县| 昌黎县| 昆山市| 新河县| 封开县| 凤冈县| 巧家县| 广饶县| 从化市| 原平市| 和顺县| 通河县| 西乡县| 红桥区| 措勤县| 平陆县| 永济市| 伊金霍洛旗| 尖扎县| 台中县| 台安县| 武山县| 玛多县| 九寨沟县| 定南县| 凤庆县| 林甸县| 北安市| 嘉荫县| 阳高县| 遂昌县| 中江县|