最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java設(shè)計(jì)模式編程中命令模式的項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)

 更新時(shí)間:2016年04月28日 09:26:38   作者:匆忙擁擠repeat  
這篇文章主要介紹了Java設(shè)計(jì)模式編程中命令模式的項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn),命令模式將請(qǐng)求與執(zhí)行分離,可以多個(gè)命令接口的實(shí)現(xiàn)類(lèi),隱藏真實(shí)的被調(diào)用方,需要的朋友可以參考下

正論:

命令模式把一個(gè)請(qǐng)求或者操作封裝到一個(gè)對(duì)象中。命令模式運(yùn)行系統(tǒng)使用不同的請(qǐng)求把客戶(hù)端參數(shù)化,對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,可以提供命令的撤銷(xiāo)和恢復(fù)功能。

通俗:

其實(shí)很好理解。命令模式,關(guān)心的就是命令(或者稱(chēng)為操作)。打個(gè)比方。在一個(gè)公司里面,整個(gè)運(yùn)作就像一個(gè)系統(tǒng)。某個(gè)boss發(fā)布了一個(gè)命令,中層領(lǐng)導(dǎo)接到這個(gè)命令,然后指派給具體負(fù)責(zé)這個(gè)員工。整個(gè)流程很清晰吧。有一個(gè)需求,如何將這個(gè)流程固定下來(lái),形成一個(gè)系統(tǒng)。我們只要抓住了重點(diǎn):命令。將它抽取出來(lái),其他的都迎刃而解了。抽取出命令,封裝成一個(gè)獨(dú)立的對(duì)象,實(shí)現(xiàn)了解耦。至于其他的,可以方便地?cái)U(kuò)展,不論這個(gè)命令是CEO,人事部,還是你爸提出來(lái)的。無(wú)論這個(gè)命令的執(zhí)行者是張三還是王八。這個(gè)模式的產(chǎn)生,其實(shí)是哲學(xué)上的“抓住主要矛盾”。更多的例子,如其他作家舉的“去路邊吃烤肉和去烤肉店吃烤肉有什么不同”或者“美猴王大鬧天宮中玉帝拍太白金星捉來(lái)猴子”。

Java命令模式本質(zhì)是對(duì)命令的封裝,從而把發(fā)出命令的責(zé)任和執(zhí)行命令的責(zé)任分割開(kāi)了,委派給不同的對(duì)象。通俗地說(shuō),我是老總,我只管發(fā)個(gè)命令,至于這個(gè)命令發(fā)給誰(shuí),誰(shuí)執(zhí)行,關(guān)我P事,我發(fā)錢(qián)請(qǐng)人不是為了給自己找麻煩。你是負(fù)責(zé)事情的員工,你的天職是做好上級(jí)交給你的任務(wù),踏踏實(shí)實(shí),不要知道太多,不要八卦,不要問(wèn)太多了。

實(shí)現(xiàn):
我們先來(lái)看一下類(lèi)圖:

201642892507277.jpg (846×486)

根據(jù)這個(gè)我們來(lái)看示例代碼:

public interface ICommand { 
  void execute(); 
} 

public class ConcreteCommand implements ICommand { 
  private Receiver receiver; 
 
  public ConcreteCommand(Receiver receiver) { 
    this.receiver = receiver; 
  } 
 
  @Override 
  public void execute() { 
    this.receiver.action(); 
  } 
 
} 

public class Receiver { 
  public void action() { 
    System.out.println("receiver do something"); 
  } 
} 

public class Invoker { 
  private ICommand command; 
   
  public Invoker(ICommand command) { 
    this.command = command; 
  } 
   
  public void invoke() { 
    this.command.execute(); 
  } 
} 

public class Test { 
  public static void main(String[] args) { 
    Receiver receiver = new Receiver();//真正的執(zhí)行者 
    ICommand command = new ConcreteCommand(receiver);//用于的隔離的命令 
    Invoker invoker = new Invoker(command );//調(diào)用者 
    invoker.invoke(); 
  } 
} 


優(yōu)點(diǎn):

  • 很容易構(gòu)造一個(gè)命令隊(duì)列
  • 記錄相關(guān)的命令日志
  • 增加命令的狀態(tài),實(shí)現(xiàn)命令的撤銷(xiāo)和重做
  • 允許接受請(qǐng)求的一方?jīng)Q定是否可做
  • 新的命令輕而易舉可以加入其中

缺點(diǎn):
可能會(huì)有過(guò)多的具體命令類(lèi)存在。

相關(guān)文章

  • 一篇文章帶你入門(mén)java工廠(chǎng)模式

    一篇文章帶你入門(mén)java工廠(chǎng)模式

    這篇文章主要介紹了Java工廠(chǎng)模式,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類(lèi)型、數(shù)據(jù)類(lèi)型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-08-08
  • Mybatis判斷空字符串的問(wèn)題

    Mybatis判斷空字符串的問(wèn)題

    這篇文章主要介紹了Mybatis判斷空字符串的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 1秒鐘實(shí)現(xiàn)Springboot?替換/寫(xiě)入?word文檔里面的文字、圖片功能

    1秒鐘實(shí)現(xiàn)Springboot?替換/寫(xiě)入?word文檔里面的文字、圖片功能

    這篇文章主要介紹了Springboot?替換/寫(xiě)入?word文檔里面的文字、圖片,1秒鐘實(shí)現(xiàn),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 解析JavaSe的內(nèi)部類(lèi)

    解析JavaSe的內(nèi)部類(lèi)

    這篇文章主要為大家詳細(xì)介紹了JavaSe的內(nèi)部類(lèi),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 深入淺析JDK8新特性之Lambda表達(dá)式

    深入淺析JDK8新特性之Lambda表達(dá)式

    Lambda表達(dá)式主要是替換了原有匿名內(nèi)部類(lèi)的寫(xiě)法,也就是簡(jiǎn)化了匿名內(nèi)部類(lèi)的寫(xiě)法。這篇文章主要介紹了JDK8新特性之Lambda表達(dá)式,非常不錯(cuò)感興趣的朋友參考下吧
    2016-10-10
  • MyBatis傳入多個(gè)參數(shù)時(shí)parameterType的寫(xiě)法

    MyBatis傳入多個(gè)參數(shù)時(shí)parameterType的寫(xiě)法

    這篇文章主要介紹了MyBatis傳入多個(gè)參數(shù)時(shí)parameterType的寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    詳解Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    這篇文章主要為大家詳細(xì)介紹了Spring中如何更簡(jiǎn)單的實(shí)現(xiàn)讀取和存儲(chǔ)對(duì)象,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • java讀取解析xml文件實(shí)例

    java讀取解析xml文件實(shí)例

    這篇文章主要介紹了java讀取解析xml文件實(shí)例,本文創(chuàng)建了一個(gè)XML解析類(lèi)同時(shí)講解了循環(huán)節(jié)點(diǎn)輸出方式,需要的朋友可以參考下
    2015-03-03
  • java根據(jù)本地IP獲取mac地址的方法

    java根據(jù)本地IP獲取mac地址的方法

    這篇文章主要為大家詳細(xì)介紹了java根據(jù)本地IP獲取mac地址的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • jmeter正則表達(dá)式實(shí)例詳解

    jmeter正則表達(dá)式實(shí)例詳解

    正則表達(dá)式就是記錄文本規(guī)則的代碼。學(xué)習(xí)正則表達(dá)式最好就是從實(shí)例下手。下面我們通過(guò)實(shí)例代碼給大家介紹jmeter正則表達(dá)式的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-12-12

最新評(píng)論

龙井市| 浮山县| 定陶县| 罗平县| 普兰县| 垦利县| 沂源县| 太康县| 类乌齐县| 通河县| 定边县| 即墨市| 博白县| 姚安县| 新野县| 莒南县| 襄城县| 通山县| 勃利县| 江津市| 大宁县| 苗栗市| 大竹县| 诸暨市| 突泉县| 长沙市| 札达县| 子洲县| 驻马店市| 黄山市| 治多县| 内江市| 北辰区| 昭苏县| 崇左市| 苏尼特左旗| 简阳市| 长垣县| 西安市| 阿拉尔市| 吕梁市|