我試圖爲以下問題找到一個優雅的OOP解決方案。處理具有混合POJOS的集合,每個POJO具有不同的處理函數
假設我們有一個POJOS集合,在這種情況下,每個POJO可能是不同的類。我們需要處理這個集合,對每個POJO類(或類型)使用不同的規則。
一個基本假設是我們不能用適當的處理程序來裝飾POJO,因爲我們不控制它們的生成,並按原樣接收集合。因此,任何機制都會陷入同一陷阱。但是,第3項處理這種可能性。
有一些可能的解決方案,一些非常醜陋,多了一些優雅而複雜的:
- 顯而易見的解決方案,以及最醜的,使用}這種運營商POJO傳遞到處理程序。
- 對1進行稍微更好的修改,就是對鏈式調度程序使用一個責任鏈,這樣新的類型只需要一個新的調度程序。但是,每個調度器仍然需要instanceOf。
- 創建增強的對象,而不是POJOS,其中每個對象都持有對其處理程序的引用。這創建了POJO和我們的處理器之間的耦合。
- 創建(我知道如何在Java中正確執行此操作)將處理程序註冊到特定事件類的調度程序服務,並使用泛型(類型安全容器,如有效的java中)將事件分派給處理程序。
4是最優雅的,但我想知道是否有更好的想法。
您將在編碼時間通知所有現有的事件類別:-) 每次添加新類時,都需要添加一個新處理程序,然後編碼... – KarlP 2009-04-21 13:19:05
+1。 「這需要在編碼時間瞭解所有可能的事件類別」:對我來說,似乎是基本要求的一部分。 – Olivier 2009-04-21 13:21:18