我們在程序開發中,也許經常碰到這樣的情況,在一個業務流程中會調用很多不同的函數。
例如:
//---------------------------------------
func1(param1);
func2(param21,param22);
func3(param31,param32,param33);
//----------------------------------------
而在上面三個函數中每個函數的內部很可能都查詢訪問了同一個數據,這樣就造成了資源的浪費,
有沒有解決辦法呢?
我想了一個解決方法,我命名為“數據商店”。“數據商店”:從名字即可看出思路,在整個業務流程中創建一個二重hash表,先按類型做外層hash表的key,而后按每個對象關鍵字來做內層hash表的key。用這種結構把數據暫存起來以便業務流程中每個函數訪問。那怎么在業務流程中的每個函數內部訪問呢?
把存儲數據的二重hash表做為參數傳給每個函數。
下面是偽代碼:
//-----------------------------------------------------------------
#include <map>
#include <string>
using namespace std;
typedef struct DataNode
{
string type;
map<string,void*> goods;
} Chest;
map<string,Chest> shop;
func1(param1,&shop);
func2(param21,param22,&shop);
func3(param31,param32,param33,&shop);
//-----------------------------------------------------------------
在每個函數中在訪問請求數據前,都在shop中搜索要請求的數據在shop中是否存在,如果shop中存在就
直接取出,不必再訪問請求數據節省了資源和時間。
這個解決方法只在一個業務流程中使用,不作為類似緩存或持久層來使用。請大家給些意見,現在還沒有完善。