2013-11-20 43 views
0

我需要設計一個服務來消費一個請求併產生一個響應。就結構而言,我希望迴應基本上回應請求,並且還包括狀態。類似請求響應的設計模式

例如

請求:

class Request { 
String x; 
String y; 
} 

class Response { 
String x; 
Status x_s; 
String y; 
Status y_s; 
} 

是任何人都知道,這說明任何模式的?一種解決方案可以是使用相同的對象來表示請求和響應,並且還可以使用包含值和狀態的對象,例如

class Attr { 
Status status; 
String value; 
} 

class RequestResponse { 
Attr x; 
Attr y; 
} 
  • 這感覺有點笨拙,但。例如。 RequestResponse.attr.status只適用於響應。
  • 請注意,就impl/usage而言,關於請求/響應的結構是相同的,內容實際上會有所不同。我正在嘗試實施語言翻譯服務。

謝謝。

回答

3

爲什麼不

public class Response { 
    private Request request; // Has-a relationship 
    private Status x_s; 
    private Status y_s; 
} 

除了任何設計上的優點,這也有額外的好處,你「再利用」的內存已分配的請求。它還允許您在生成/處理響應時使用Request類中定義的功能,如Request.getRequestType()或類似的。

另一種解決方案是讓Response從請求(是一種關係)繼承,但組合方法通常更好

+0

謝謝。您的模型是否爲客戶提供了一種乾淨的方式來確定哪個狀態字段與哪個請求字段相關。也就是說,「response.request.x_value」如何與「response.x_status」相關聯。通過乾淨,我想我的意思是以一種安全的方式,不使用反射。 – Damo

+0

爲什麼它會有相同的價值? –

+0

它不會有相同的價值。屬性將會相關。一個將包含一個值,另一個則包含該值的狀態。 – Damo