的我現在有一個異步API,其中一個Manager類是負責創建A
類,B
,C
等創建是異步的其他對象,並且每次調用一個函數manager.createXXX()
將伴隨其回調on_createXXX_done(A& a)
。C++異步創建對象
創建A
,B
,C
對象需要是連續的。而API的典型用法將涉及創建A
,並在其回調中觸發創建B
等等。
這涉及到創建邏輯分裂成許多功能,我覺得很醜。此外,創建所有對象後需要執行的操作需要在最後創建的對象(C
)的回調中編碼,即使該對象與要執行的操作之間沒有直接關係。
生成器設計模式實際上並不適合,因爲管理者不擁有的對象A
,B
,C
,它只是幫助上創建並返回它們。
void on_creationA_done(A& a)
{
m_a = a;
//Trigger next creation
m_manager.createB()
}
void on_creationB_done(B& b)
{
m_b = b;
//Trigger next creation
m_manager.createC()
}
void on_creationC_done(C& c)
{
m_c = c;
//No more creations are needed. Just perform some post-creation actions
do_something() // This needs to be called once all A, B, C are created.
}
我還檢查愚蠢/期貨連鎖異步操作,但會涉及通過我們的公共API暴露愚蠢庫,對不對?
在這種情況下使用什麼樣的好模式?
我不太同意這個解決方案。經理類可以創建更多的對象(或更少)。假設您有來自A - Z的對象。每個用例或場景都可以請求創建對象的任何子集。這使得你的解決方案變得不可能,因爲你需要爲每個子集創建一個UseCase類,所以N個子集(N = pow(2,集合中的對象數)) – FCR
決定是否必須創建單獨的用例類或一般來處理所有情況。這取決於每個用例的複雜程度和它們的數量。 – GeorgeT