需求:
生成一種單據:發貨單。
發貨單分為頭和行,頭根據行的一些屬性分組產生。
需要各種驗證。
同時要插入批次表。
在整個系統中,不止一處會需要生成發貨單。
分析:在系統中每次都要生成發貨單的地方都寫一套程式,會發現每套程式都比較類似。
面對比較類似的程式時,就要分解程式,把相同的部分和不同的部分區分開。
針對該程式,變化的是每次單據的資料,不變的是分組,驗證,插相關表的操作。所以,要把資料和操作分開。
對策:乙個介面表,包含行和頭的需要的字段。對於這種頭行結構的單據,介面表是保持頭行結構還是扁平化,是需要考量的乙個問題。針對該例,頭根據行的資料分組產生,所以介面表扁平化,可以把分組過程寫進通用程式中。
乙個程式,從介面表中取資料,執行分組,驗證,插相關表的操作。
擴充套件:為了支援併發,可以加入批次機制,用乙個
group_id
來區分每次要處理的資料。
為了給出是否成功的犯規,可以加入
process_flag
等。為了給出錯誤資訊的反饋,可以加入乙個錯誤資訊表。
介面表 一種通用機制
需求 生成一種單據 發貨單。發貨單分為頭和行,頭根據行的一些屬性分組產生。需要各種驗證。同時要插入批次表。在整個系統中,不止一處會需要生成發貨單。分析 在系統中每次都要生成發貨單的地方都寫一套程式,會發現每套程式都比較類似。面對比較類似的程式時,就要分解程式,把相同的部分和不同的部分區分開。針對該程...
介面表 一種通用機制
需求 生成一種單據 發貨單。發貨單分為頭和行,頭根據行的一些屬性分組產生。需要各種驗證。同時要插入批次表。在整個系統中,不止一處會需要生成發貨單。分析 在系統中每次都要生成發貨單的地方都寫一套程式,會發現每套程式都比較類似。面對比較類似的程式時,就要分解程式,把相同的部分和不同的部分區分開。針對該程...
一種通用CMakeLists模板
1.cmake verson,指定cmake版本 cmake minimum required version 3.16 2.project name,指定專案的名稱,一般和專案的資料夾名稱對應 project demo 3.head file path,頭檔案目錄 include director...