converter設計模式擴充套件,多種輸入輸出與標準輸入輸出的轉化方案
converter設計模式擴充套件,多種輸入輸出與標準輸入輸出的轉化方案
需求背景
一般情況下B端應用系統會對接多個使用者,不同使用者在入參出參格式、應用系統處理方式、出參返回時機,甚至非同步出參等方面不盡相同。針對應用系統的標準入參出參和多使用者入參出參的差異,需要一箇中介軟體來實現入參出參的轉化。converter設計模式是實現這種轉換的框架模型,然而在具體的應用系統下需要基於converter模式做出擴充套件已適應具體的需求。
下圖是一種基本的B端系統請求模式
其中的A型別的出參和B型別的出參包含兩層含義:同步出參和非同步出參。橙色部分的引數轉換器是本文討論的主題
converter設計模式
簡單複習一下converter設計模式,詳細講解文章(帶原始碼)
上圖是簡化版的converter模式型別。Converter是介面,其中使用了java8的語法Function<U, T>, 具體的轉換細節程式碼由開發者自己實現Function<U, T> 完成。PersonConverter是介面的實現,實現從PersonDto到Person的轉換功能。
抽象來看,converter模式就是這麼簡單。
擴充套件converter設計模式
在converter模式的基礎上要實現多使用者的入參,出參,甚至非同步出參的需求,要對模式做一定的調整。
上圖是針對“背景需求”中多使用者請求模式的解決方案的類圖。先不要頭皮發麻,逐一講解一下。
注意類圖中的有很多介面和虛擬類,其目的都是為了抽象,為多使用者,甚至多流程開發提供的抽象
- InputHandler 和 OutHandler
這兩個是介面類,與converter模式中的Function<U, T>的作用是一樣的。由使用者自己實現轉換的細節。 - InputDuplexConverter
從名稱上解釋:輸入全雙工轉換器。職責是入參處理和同步出出參處理。這是個抽象類,成員變數中有inputHandler和OutHandler - AInputDuplexConverter
繼承InputDuplexConverter的抽象類,什麼還是抽象類呢?可以理解為,把A使用者的一些公共功能寫到這個型別。 - ARInputDuplexConverter
繼承AInputDuplexConverter類, 是具體實現,其中的兩個變數是: AInputHandler和AOutHandler類,也就是處理A的輸入和同步輸出
整個入參處理和同步出參已經介紹完畢,總體來說是converter模式的擴充套件,通過虛擬類把公共部分抽象出來。
同樣非同步出參的處理是上半部分。包括:ANoticeInputHandler , ANoticeOutHandler, OutDuplexConverter, AOutputDuplexConverter 。結構型別,大家類比看吧
總結
設計模式, 資料結構, 演算法等都是對程式設計師很基礎又重要的知識。在實際問題及解決過程中,都是在此基礎上,針對實際問題提出解決方案。針對應用系統的標準入參出參和多使用者入參出參的差異,而提出的多種輸入輸出與標準輸入輸出的轉化方案,是基於converter模式擴充套件來的。
希望對大家有幫助,如需進一步交流,可以留言或留下聯絡方式,一起多探討進步。
相關文章
- Java —— 標準輸入輸出Java
- python 標準輸入輸出Python
- Linux的標準輸入、標準輸出和標準錯誤Linux
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- 輸入輸出
- 格式化輸入輸出
- StreamingPro 支援多輸入,多輸出配置
- 輸入輸出流
- 將輸入的字元轉化為int格式輸出字元
- C++名稱空間、標準輸入輸出、引用C++
- 格式化輸入和輸出
- Python資料的輸入與輸出Python
- AUTOCAD——圖形的輸入與輸出
- python:檔案的輸入與輸出Python
- 06Numpy輸入與輸出
- 資料的輸入輸出
- Java 輸入輸出流Java
- 1.輸入輸出
- 【C++】輸入輸出C++
- 輸入輸出系統
- shell——shell輸入輸出
- ACM的Python版輸入輸出ACMPython
- Python3常用輸入模式:-輸入多組,固定組,多個輸入Python模式
- python ----輸入輸出 變數Python變數
- Java基礎輸入輸出Java
- C語言輸入輸出C語言
- 03 資料輸入-輸出
- Shell輸入\輸出重定向
- Python輸入和輸出(IO)Python
- C語言之輸入輸出C語言
- 常用輸入輸出函式函式
- 排序,檔案輸入輸出排序
- 讀入、輸出優化優化
- Java------簡單的輸入/輸出Java
- 1.變數and輸入輸出變數
- 輸出輸入函式彙總函式
- 瞭解下C# 檔案的輸入與輸出C#
- 標準化/結構化 JSON 輸出JSON