2013-09-23 15 views
1

我有串口設備,在答案中傳輸幾種類型的消息。每個消息標題代表消息類型。每種消息類型都有一組字段。我永遠不知道我會得到哪種消息類型。getMessage的設計模式

在我的代碼中,每個消息類型都代表類。藉助getMessage函數返回消息的最佳方式是什麼?我可以返回消息接口或父消息類,它將持有具體消息。但是它是否很好設計?

回答

0

使用interface來總結類似結構的幾個classes是一個很好的設計。

我想你有這樣的結構:像

public class FooMessage implements Message { 
    public String getType() { return "Foo"; } 
    public String getFooField() { return fooField; } 
    /* ... */ 
} 

public interface Message { 
    public String getType(); 
} 

,然後幾個implemenations所以你getMessage()方法是這樣的:

public Message getMessage() { 
    Message message = /* get the next message */; 
    return message; 
} 

這將是一個很好的解決這個問題的方法。

+0

是的,我曾經考慮過。我不喜歡只在getMessage()上做instanceOf的事實返回並進行類型轉換。 – vico

+0

@ user1501700那麼,如果你不知道會發生什麼,那麼你就沒有那麼多了。 –