2010-09-21 47 views
1

我的工作有以下用例撲克分析工具:設計圍繞一個第三方庫我的域模型

  1. 用戶創建策略類的一種方法:輸入遊戲狀態,輸出PokerAction
  2. 用戶運行分析腳本以啓動各種策略亞類之間的PokerGame(即各種策略)
  3. PokerGame生成隨機甲板
  4. PokerGame發送遊戲狀態到策略
  5. 斯特拉特埃及將PokerAction到PokerGame
  6. PokerGame更新遊戲狀態
  7. 當遊戲完成(由PokerGame管理),發送GameResult來分析腳本
  8. 用戶評論分析腳本的輸出

有一個第三方圖書館,執行所有的PokerGame功能。它與我在某些領域對域的建模(例如卡片值等)完全不匹配,但執行我所需的大部分「難以編碼」功能(即非重要的步驟4 - 7)。

一般設計問題 當面對這樣的庫(省去了大量硬編碼的,但可能會限制在相關項目未來的設計選擇),你傾向於你的項目的其餘部分模具庫?您是否重構了關鍵庫以符合您的域模型?或者是別的什麼?

感謝,

邁克

回答

2

如果我真的覺得我的域模型更適合我前進,我會嘗試創建一個抽象層,第三方庫和我自己的模型之間進行映射。這將使我能夠利用圖書館的優勢,同時爲我提供靈活性,可以在將來用另一個第三方圖書館或我創建的圖書館替換它。

看一看design patterns這個清單,尤其是Adapter Pattern

+0

謝謝。我在Facade上選擇了Adapter,因爲我不確定我有一個「更簡單」的界面是多麼重要。 – MikeRand 2010-09-22 15:14:10

1

我不會將我的項目緊緊地綁定到庫上,而是嘗試抽象功能並將兩者之間的一個或多個對象耦合起來。調解員和/或門面模式在我心中。