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

詳解Java設計模式——命令模式

 更新時間:2019年04月03日 08:35:39   作者:No_Game_No_Life_  
這篇文章主要介紹了Java設計模式——命令模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

命令模式

命令模式很好理解,舉個例子,司令員下令讓士兵去干件事情,從整個事情的角度來考慮,司令員的作用是,發(fā)出口令,口令經過傳遞,傳到了士兵耳朵里,士兵去執(zhí)行。這個過程好在,三者相互解耦,任何一方都不用去依賴其他人,只需要做好自己的事兒就行,司令員要的是結果,不會去關注到底士兵是怎么實現的。我們看看關系圖:

Invoker是調用者(司令員),Receiver是被調用者(士兵),MyCommand是命令,實現了Command接口,持有接收對象,看實現代碼:

public interface Command { 
  public void exe(); 
} 
public class MyCommand implements Command { 
 
  private Receiver receiver; 
   
  public MyCommand(Receiver receiver) { 
    this.receiver = receiver; 
  } 
 
  @Override 
  public void exe() { 
    receiver.action(); 
  } 
} 
public class Receiver { 
  public void action(){ 
    System.out.println("command received!"); 
  } 
} 
public class Invoker { 
   
  private Command command; 
   
  public Invoker(Command command) { 
    this.command = command; 
  } 
 
  public void action(){ 
    command.exe(); 
  } 
} 
public class Test { 
 
  public static void main(String[] args) { 
    Receiver receiver = new Receiver(); 
    Command cmd = new MyCommand(receiver); 
    Invoker invoker = new Invoker(cmd); 
    invoker.action(); 
  } 
} 

這個很哈理解,命令模式的目的就是達到命令的發(fā)出者和執(zhí)行者之間解耦,實現請求和執(zhí)行分開,熟悉Struts的同學應該知道,Struts其實就是一種將請求和呈現分離的技術,其中必然涉及命令模式的思想!

介紹

意圖:將一個請求封裝成一個對象,從而使您可以用不同的請求對客戶進行參數化。

主要解決:在軟件系統(tǒng)中,行為請求者與行為實現者通常是一種緊耦合的關系,但某些場合,比如需要對行為進行記錄、撤銷或重做、事務等處理時,這種無法抵御變化的緊耦合的設計就不太合適。

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

如何解決:通過調用者調用接受者執(zhí)行命令,順序:調用者→接受者→命令。

關鍵代碼:定義三個角色:1、received 真正的命令執(zhí)行對象 2、Command 3、invoker 使用命令對象的入口

應用實例:struts 1 中的 action 核心控制器 ActionServlet 只有一個,相當于 Invoker,而模型層的類會隨著不同的應用有不同的模型類,相當于具體的 Command。

優(yōu)點: 1、降低了系統(tǒng)耦合度。 2、新的命令可以很容易添加到系統(tǒng)中去。

缺點:使用命令模式可能會導致某些系統(tǒng)有過多的具體命令類。

使用場景:認為是命令的地方都可以使用命令模式,比如: 1、GUI 中每一個按鈕都是一條命令。 2、模擬 CMD。

注意事項:系統(tǒng)需要支持命令的撤銷(Undo)操作和恢復(Redo)操作,也可以考慮使用命令模式,見命令模式的擴展。

以上所述是小編給大家介紹的Java設計模式——命令模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • Java SPI機制詳細介紹

    Java SPI機制詳細介紹

    大家好,本篇文章主要講的是Java SPI機制詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MyBatis高級映射ResultMap解決屬性問題

    MyBatis高級映射ResultMap解決屬性問題

    對于數據庫中對表的增刪改查操作,我們知道增刪改都涉及的是單表,而只有查詢操作既可以設計到單表操作又可以涉及到多表操作,所以對于輸入映射parameterType而言是沒有所謂的高級映射的,也就是說高級映射只針對于輸出映射
    2023-02-02
  • Java異常分類以及幾種處理機制分析講解

    Java異常分類以及幾種處理機制分析講解

    在Java的廣闊宇宙中,有一群特殊的“超級英雄”,它們在代碼世界中穿梭,守護著程序的正常運行——它們就是“異?!?這些英雄們,各司其職,保護著程序免受錯誤的侵擾,今天,我們將深入這個神秘的世界,全面解析異常的分類,掌握異常的處理機制
    2024-07-07
  • Java?報錯?java.util.ConcurrentModificationException:?null?的原因及解決方案

    Java?報錯?java.util.ConcurrentModificationException:?null?

    這篇文章主要介紹了Java?報錯?java.util.ConcurrentModificationException:?null?的原因和解決方案,這個異常通常在多線程環(huán)境下出現,意味著在迭代過程中,集合或者映射的結構發(fā)生了變化,本文分享完美解決方案,需要的朋友可以參考下
    2023-07-07
  • 如何通過properties文件配置web.xml中的參數

    如何通過properties文件配置web.xml中的參數

    這篇文章主要介紹了如何通過properties文件配置web.xml中的參數方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解SpringSecurity處理會話管理和注銷功能

    詳解SpringSecurity處理會話管理和注銷功能

    本文介紹了詳解SpringSecurity處理會話管理和注銷功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Java中的線程私有變量ThreadLocal詳解

    Java中的線程私有變量ThreadLocal詳解

    這篇文章主要介紹了Java中的線程私有變量ThreadLocal詳解,ThreadLoalMap是ThreadLocal中的一個靜態(tài)內部類,類似HashMap的數據結構,但并沒有實現Map接口,需要的朋友可以參考下
    2023-08-08
  • 詳解IDEA2020新建spring項目和c3p0連接池的創(chuàng)建和使用

    詳解IDEA2020新建spring項目和c3p0連接池的創(chuàng)建和使用

    C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,本文就使用Spring實現,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • mybatis接口綁定失效的解決

    mybatis接口綁定失效的解決

    這篇文章主要介紹了mybatis接口綁定失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java數據結構之選擇排序算法的實現與優(yōu)化

    Java數據結構之選擇排序算法的實現與優(yōu)化

    選擇排序:(Selection?sort)是一種簡單直觀的排序算法,也是一種不穩(wěn)定的排序方法。本文主要為大家介紹一下選擇排序的實現與優(yōu)化,希望對大家有所幫助
    2023-01-01

最新評論

昌吉市| 浦北县| 太湖县| 神木县| 新安县| 海盐县| 大埔县| 建阳市| 郑州市| 喜德县| 绵阳市| 社旗县| 崇明县| 扎兰屯市| 砀山县| 光山县| 龙南县| 阳谷县| 霸州市| 山阴县| 宣威市| 锦屏县| 五华县| 广平县| 榕江县| 漠河县| 崇州市| 大同市| 益阳市| 屏边| 边坝县| 仙桃市| 离岛区| 兖州市| 南京市| 龙陵县| 呼和浩特市| 五指山市| 彰化市| 宁国市| 湄潭县|