我有一個具有「notify」方法的進程,它接收消息類型的基類作爲參數。我想根據派生類型的消息做不同的處理。這是否意味着我需要添加一個名爲「process」或類似於消息類型的方法,並使用多態性調用它?爲每個特定的消息類型添加「通知」會更好嗎?如何根據消息類型處理不同的處理?
更多細節:語言是C++。我認爲通知在這裏是一個好主意,所以我只需要一種方法來通知各種消息類型。控制器從指定純虛通知(MsgBaseClass)方法的偵聽器類繼承。我仍然喜歡這個想法,因爲我不必爲每個新消息類型添加通知。但是在控制器代碼本身中,除了動態類型轉換之外,我沒有看到任何區分消息類型或向消息添加消息類型的方法。
編輯:我想我要去與訪客模式。它允許我只保留一個通知的方法,並且可以避免在代碼中使用switch語句。 「訪問者」接口將指定偵聽器處理各種派生消息類型所需的各種方法。這將只需要一個消息被添加到消息的基類,純虛「接受(MyMessageTypeVisitor v)的派生消息類別將利用v.visit實現它(這);
我認爲這個現在應該工作
嗨德克, 我給主要問題增加了一些細節。 – 2009-05-02 16:50:25
我喜歡動態演員主意的簡單性。但是將處理與消息本身打包在一起更「OO」,不是嗎? – 2009-05-02 17:06:59