如何降低平台和業務的資料結構的耦合

2021-05-24 09:34:43 字數 928 閱讀 2208

問題背景:

系統的模組劃分為平台和業務,分別由平台組和業務組各自維護各自的**。

typedef struct plat_container

int a1; /*平台用*/

int a2; /*平台用*/

int *p_an; /*平台用*/

int serv11;   /*業務1用*/

int serv12; /*業務1用*/

int servn;   /*業務n 用*/

}plat_container_s;

如上所述,大量的業務資料引入導致該資料結構非常龐大。上面是舉例,實際上肯定更複雜,還有指標及併發保護機制。

如下缺點:

1、資料結構龐大,可維護性差

2、大量的業務可能會通過這個資料結構和平台產生耦合。

這種大量的業務資料往裡塞,就像我們吃火鍋時不斷往鍋裡加料一樣,於是我笑稱這種資料結構就是"火鍋模式".

此種資料結構可能很多人已經習慣了,都是這麼寫的,不怕笑話,我現在專案組正是這麼做的,所以我想先自行做個實驗優化這種資料結構,

降低這種業務和平台的耦合度。

我的想法如下:

typedef struct plat_container

int a1; /*平台用*/

int a2; /*平台用*/

int *p_an; /*平台用*/

struct list serv_list;  /*業務鏈,業務可以動態擴充套件,當然也可以考慮用指定長度的陣列,比如最多支援1024個業務特性*/ 

}plat_container_s;

平台提供業務註冊介面,業務初始化時,呼叫該介面平台為業務分配空間,然後把記憶體位址返回給業務。平台把該業務節點掛在平台鎖維護的

業務鍊錶中。業務得到平台分配的記憶體空間後,愛存放什麼資料隨業務怎麼放。業務資料完全對平台透明。平台也看不到業務的資料結構。

如何應對業務資料結構的變更

1 問題描述 近期在做乙個審批工作流的系統,在和客戶交流的過程中,總是聽到 你們的系統要支援我們的業務發展,天我們要上 產品,你們的系統也要支援 產品的審批 當然,不同產品的審批內容不同 流程不同。在這裡先說下怎麼解決業務資料結構的變更。2 解決方法 想要不改程式就實現對業務資料結構變更的支援,基本...

如何學習資料結構和演算法

首先掌握常用的 基礎的。然後在此基礎上往進行擴充套件學習。常用的 基礎的資料結構和演算法有20個。資料結構 陣列 鍊錶 棧 佇列 雜湊表 二叉樹 堆 跳表 圖 trie樹 演算法 遞迴 排序 二分查詢 搜尋 雜湊演算法 貪心演算法 分治演算法 回溯演算法 動態規劃 字串匹配演算法。這些需要一一攻克。...

資料結構 資料結構的起源和研究內容

1,本文論述資料結構的起源和資料結構研究內容 2,高手往往能夠看到初學者看不到的問題 3,為什麼有程式存在 1,程式是為了解決實際問題而存在的 2,從本質上講,程式是解決問題的步驟描述 有了這些步驟,計算機照做就可以了 4,理解實際問題 1,確認問題型別 1,如 數值計算,求最小值個數,排序等 2,...