設計模式之☞委派模式,通俗易懂,一學就會!!!

来源:https://www.cnblogs.com/chenyanbin/archive/2019/12/16/12050908.html
-Advertisement-
Play Games

導讀 在spring中委派模式用的比較多,在常用的23種設計模式中其實是沒有委派模式的影子的。 在spring中體現:Spring MVC框架中的DispatcherServlet其實就用到了委派模式。 委派模式的作用:基本作用就是負責任務的調用和分配,跟代理模式很像,可以看做是一種特殊情況下的靜態 ...


導讀

  在spring中委派模式用的比較多,在常用的23種設計模式中其實是沒有委派模式的影子的。

  在spring中體現:Spring MVC框架中的DispatcherServlet其實就用到了委派模式。

  委派模式的作用:基本作用就是負責任務的調用和分配,跟代理模式很像,可以看做是一種特殊情況下的靜態代理的全權代理,但是代理模式註重過程,而委派模式註重結果。

Example

  利用一張圖簡述委派模式,下圖簡單說明瞭老闆把任務給了項目經理,而項目經理將任務拆分,分給一個個it攻城獅,自己沒有做工作,而是把具體工作交給具體的執行者去做。

 

 代碼示例

介面:IExcuter.java

public interface IExcuter {
    void excute(String command);
}

攻城獅A:ExcuterA.java

public class ExcuterA implements  IExcuter{

    @Override
    public void excute(String command) {
        System.out.println("員工A 開始做"+command+"的工作");
    }
}

攻城獅B:ExcuterB.java

public class ExcuterB implements  IExcuter{
    @Override
    public void excute(String command) {
        System.out.println("員工B 開始做"+command+"的工作");
    }
}

項目經理(委派者):Leader.java

public class Leader implements  IExcuter {

    private Map<String,IExcuter> targets = new HashMap<String,IExcuter>();
    public Leader() {
        targets.put("加密",new ExcuterA());
        targets.put("登錄",new ExcuterB());
    }
    @Override
    public void excute(String command) {
        targets.get(command).excute(command);
    }
}

老闆:Boss.java

public class Boss
{
    public static void main(String[] args) {
        Leader leader  = new Leader();
        //看上去好像是我們的項目經理在幹活
        //但實際幹活的人是普通員工
        //這就是典型,幹活是我的,功勞是你的
        leader.excute("登錄");
        leader.excute("加密");
    }
}

實現

 參考:https://www.jianshu.com/p/38acf37b1e1f


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、CSS樣式 解決文字過長顯示省略號問題 1、一般樣式 一般 css 樣式,當寬度不夠時,可能會出現換行的效果。這樣的效果在某些時候肯定是不行的,可以修改 css 樣式來解決這個問題。 <!DOCTYPE html> <html> <head> <meta http-equiv="Content- ...
  • 對應生成的dist文件目錄及多頁面配置時的文件目錄如下: ...
  • 引子 textarea 中的換行格式,在其它地方顯示時,需要保持其原有的換行格式。 [Origin][url origin] [My GitHub][url my github] 換行 textarea 元素支持多行純文本編輯。由於歷史原因,元素的值有三種不同的形式: row value 是其原始設 ...
  • Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、什麼是Vue1.Vue.js是一個構建數據驅動的Web界面的漸進式框架2.Vue.js的目標是通過儘可能簡單的API實現響應的數據綁定和組合的視圖組件3.核心是一個響應的數據綁定系統二、基本使用eg.<!DOC ...
  • JQuery輪播圖 ...
  • 1、vue初時 vue安裝三種方式: 1:CDN引入 以下推薦國外比較穩定的兩個 CDN,國內還沒發現哪一家比較好,目前還是建議下載到本地。 Staticfile CDN(國內) : https://cdn.staticfile.org/vue/2.2.2/vue.min.js unpkg:http ...
  • 模擬實現 Promise(小白版) 本篇來講講如何模擬實現一個 Promise 的基本功能,網上這類文章已經很多,本篇筆墨會比較多,因為想用自己的理解,用白話文來講講 Promise 的基本規範,參考了這篇: "【翻譯】Promises/A+規範" 但說實話,太多的專業術語,以及基本按照標準規範格式 ...
  • JSP: <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head> <lin ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...