觀察者模式實戰

場景

假設創建訂單后需要發短信、發郵件等其它的操作,放在業務邏輯會使代碼非常臃腫,可以使用觀察者模式優化代碼
在這里插入圖片描述

代碼實現

自定義一個事件
在這里插入圖片描述

發送郵件
在這里插入圖片描述

發送短信
在這里插入圖片描述

最后再創建訂單的業務邏輯進行監聽,創建訂單
在這里插入圖片描述

假設后面還需要做其它的監聽,再重新定義一個監聽類即可,創建訂單業務邏輯無需修改,對擴展開放,修改關閉

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37291.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

常見的一些BUG

常見的一些BUG,但實際上在編寫代碼時,我們應該盡可能避免這些類型的錯誤: 變量名與函數名沖突: def main(): print("Hello, World!") main 5 print("The value of main is:", main) 函數參數傳遞錯誤&…

取個對象值導致系統崩潰

取個對象值導致系統崩潰 前言 想必各位小伙經常在項目中遇到一些錯誤,取對象值的時候,經常報錯,又或者某些項目突然就掛經常都是出現在一些對象取值上面,然后就被領導一頓訓斥 報錯分析 例如: 下面這個報錯大家想必不會陌生&am…

最大交換(力扣)枚舉 JAVA

給定一個非負整數,你至多可以交換一次數字中的任意兩位。返回你能得到的最大值。 示例 1 : 輸入: 2736 輸出: 7236 解釋: 交換數字2和數字7。 示例 2 : 輸入: 9973 輸出: 9973 解釋: 不需要交換。 注意: 給定數字的范圍是 [0, 10^8] 解題思路: 1、數最…

【量化課程】08_2.深度學習量化策略基礎實戰

文章目錄 1. 深度學習簡介2. 常用深度學習模型架構2.1 LSTM 介紹2.2 LSTM在股票預測中的應用 3. 模塊分類3.1 卷積層3.2 池化層3.3 全連接層3.4 Dropout層 4. 深度學習模型構建5. 策略實現 1. 深度學習簡介 深度學習是模擬人腦進行分析學習的神經網絡。 2. 常用深度學習模型架…

山東布谷科技直播軟件源碼Nginx服務器橫向擴展:搭建更穩定的平臺服務

在直播軟件源碼平臺中,服務器扮演著重要的角色,關系著視頻傳輸、數據處理、用戶管理等工作的順利完成。隨著互聯網的迅猛發展,直播行業也隨之崛起,全世界的人們都加入到了直播軟件源碼平臺中,用戶流量的增加讓服務器的…

視頻高效剪輯,輕松平均分割視頻,生成高質量M3U8

您是否在處理視頻剪輯時常常面臨繁瑣的切分工作?是否希望能夠快速而精準地平均分割視頻,并生成適用于在線播放的高質量m3u8文件?現在,我們的智能視頻剪輯大師為您提供了一種簡便而高效的解決方案!無需復雜操作&#xf…

Leaflet入門,Leaflet如何實現vue雙向綁定數據添加到圖片標記物到地圖上,動態根據vue數據更新到地圖上以及鼠標經過標記物顯示提示框

前言 本章使用Leaflet的vue2-leaflet或者vue-leaflet插件方式實現vue數據綁定地圖數據,實現地圖標記物與vue數據的雙向聯動更新,以及鼠標經過標記物顯示提示框功能。 實現效果演示 vue如何使用Leaflet vue2如何使用:《Leaflet入門,如何使用vue2-leaflet實現vue2雙向綁定…

HOT97-多數元素

leetcode原題鏈接:多數元素 題目描述 給定一個大小為 n 的數組 nums ,返回其中的多數元素。多數元素是指在數組中出現次數 大于 ? n/2 ? 的元素。你可以假設數組是非空的,并且給定的數組總是存在多數元素。 示例 1: 輸入&…

基于java的Word自動出題系統設計與實現

摘 要: 學校作為社會之中最大的人才的培養和過度的機構,源源不斷的為社會的發展提供者各種各樣的人才。它不僅教授學生知識還教授他們一些在社會之中生存的本領和社會之中的道德規范,并且約束他們的行為。在我國現行的教育體系之中&#xff0…

【量化課程】02_3.投資學基礎概念

文章目錄 1. 投資和投資學的關系1.1 什么是投資?1.2 什么是投資學? 2. 投資學的主要內容2.1 金融市場與投資環境2.1.1 金融資產2.1.2 債券市場的意義2.1.3 金融市場與經濟2.1.4 投資過程2.1.5 競爭性的市場2.1.6 市場參與者2.1.7 主要的市場債券市場外匯…

Stable Diffusion 插件開發經驗

Stable Diffusion近來大熱,但是插件開發的資料少之又少。 這里提供一些插件開發的經驗,可供參考。 1.替換啟動頁。 如果你想要在運行Stable Diffusion的基礎上想要一些獨有的操作,不想要進行裁剪,直接替換啟動頁面,那么就需要在webui中進行替換 這里modules.ui.create_ui…

1.4 數據庫管理與優化

數據庫管理與優化 文章目錄 數據庫管理與優化1. 數據庫概述1.1 數據庫的定義和作用1.2 數據庫管理系統(DBMS) 2. 數據庫模型2.1 關系型數據庫**2.2 非關系型數據庫 3. 數據庫設計3.1 數據庫設計原則3.2 數據庫設計步驟 4. 數據庫優化4.1 數據庫性能優化4…

基于ipad協議的gewe框架進行微信群組管理(二)

友情鏈接 geweapi.com 點擊訪問即可。 獲取群組詳情 小提示: 該接口可以一次查詢20個群組查詢出來的信息是不帶公告的 請求URL: http://域名地址/api/group/detail 請求方式: POST 請求頭: Content-Type:applica…

2009年下半年 軟件設計師 上午試卷

博主介紹:?全網粉絲3W,全棧開發工程師,從事多年軟件開發,在大廠呆過。持有軟件中級、六級等證書。可提供微服務項目搭建與畢業項目實戰,博主也曾寫過優秀論文,查重率極低,在這方面有豐富的經驗…

【Microsoft 支持】【數據庫-MySql】當您嘗試從大于 5000 的 TCP 端口連接時收到錯誤 WSAENOBUFS (10055)

? 一、轉載原文 When you try to connect from TCP ports greater than 5000 you receive the error ‘WSAENOBUFS (10055)’ Symptoms If you try to set up TCP connections from ports that are greater than 5000, the local computer responds with the following WSAE…

使用PHP實現實時聊天功能的匿名聊天與加密傳輸

使用PHP實現實時聊天功能的匿名聊天與加密傳輸 隨著互聯網的發展,人與人之間的交流方式也發生了天翻地覆的變化。其中,實時聊天功能成為了一種越來越受歡迎的交流方式。對于很多網站來說,提供匿名聊天功能能夠吸引更多的用戶參與&#xff0c…

如何使用Spark/Flink等分布式計算引擎做網絡入侵檢測

如何使用Spark/Flink等分布式計算引擎做網絡入侵檢測 引言16 Distributed Abnormal Behavior Detection Approach Based on Deep Belief Network and Ensemble SVM Using Spark17 Spark configurations to optimize decision tree classification on UNSW-NB1518 A dynamic spa…

SOLIDWORKS PDM—文件版本的管控

SOLIDWORKS產品數據管理 (PDM) 解決方案可幫助您控制設計數據,并且從本質上改進您的團隊就產品開發進行管理和協作的方式。使用 SOLIDWORKS PDM Professional,您的團隊能夠:1. 安全地存儲和索引設計數據以實現快速檢索;2. 打消關于…

使用QT可視化設計對話框詳細步驟與代碼

一、創建對話框基本步驟 創建并初始化子窗口部件把子窗口部件放到布局中設置tab鍵順序建立信號-槽之間的連接實現對話框中的自定義槽 首先前面三步在這里是通過ui文件里面直接進行的,剩下兩步則是通過代碼來實現 二、項目創建詳細步驟 創建新項目 為項目命名 為…

深度思考rpc框架面經系列之二

此篇總結是接上一篇做的,當然,獨立看也是可以的,這幾個系列講解的是rpc框架的不同方面 4 序列化和反序列化(阿里一面) 4.1 為什么要序列化呢,解決什么問題呢?序列化和反序列化也是要消耗一定性…