2011-09-29 65 views
1

我正在嘗試實現請求/響應客戶端。這是它的基本實現。實現請求響應設計

Class Request 
{ 
    prepareRequest1(); 
    prepareRequest2(); 
} 

Class Response 
{ 
    processResponse1(); 
    processResponse2(); 
} 

Class Client 
{ 
    connect(); 
    sendRequest(); 
} 

myrequest = new Request(); 
client = new Client (myserver); 
my $rawResponse1 = client.sendRequest (myrequest.prepareRequest1()); 

myresponse = new Response(); 
myresponse.processResponse1 ($rawResponse1); 

我有三個類 - 即請求,響應和客戶端。請求類包含特定於請求的功能。這些請求是XML請求。除了少數初始標籤(例如sessionid等)之外,XML請求沒有任何共同之處。所有其他XML參數都是特定於請求類型的。所以,目前我正在通過爲每個請求創建一個單獨的函數來處理它。我明白它有一個可擴展性問題,但請建議我可以在此處應用的其他最佳方法。

與請求類似,對每個請求的響應都需要特定的處理。所以我有一個單獨的功能,特定於每種類型的響應我期待。通常,您可以假設請求和響應之間存在1:1映射。

最後是手持連接的客戶端類。

我有近50個這樣的請求和響應,我打算用這種方法來實現。由於我處於開發的初始階段,請爲我推薦一些改進/最佳實踐來實施此類請求/響應。

回答

0

如果您在代碼之外保留請求和響應的映射,那麼它最好。更易於管理。保留一個xml配置文件,其中存儲了與特定類型的xml消息綁定的請求和響應的類名。然後,您可以獲取類名並轉到該類來處理您的請求和響應。最好有獨立的類來處理這些消息,而不是單獨的方法。這更具可擴展性。確保你有所有你的請求類的接口,並且你的響應類也是一樣的。這將可以很容易地通過修改XML配置文件方便地更換您的請求響應類..

希望你得到它:)

+0

我幾乎50多個不同類型的消息(請求/響應)。有50個班,每個留言一個班是好的。 – rpg

+0

只要你覺得易於管理,上課就不算犯罪。但這又是我的看法。但是,如果你不想管理這些類,並且在請求和類之間有一個1-1映射,就像我建議的那樣,你可以總是試着將'請求'一起聚合在一起,並使用同一個類來服務它們,但是它最好保留這個映射到哪個xml請求 - >映射到哪個類 - >映射到xml配置文件中的代碼之外的哪個方法。這給你最大的靈活性。你將實例化你的類並通過反射調用方法 – sethu

+0

謝謝sethu,這看起來更有希望。 – rpg