我正在开发一个具有以下用例的扑克分析工具:
- 用户使用一种方法创建策略类:输入 GameState,输出 PokerAction
- 用户运行分析脚本,该脚本在各种策略子类(即各种策略)之间启动 PokerGame
- PokerGame 生成随机牌组
- PokerGame 将 GameState 发送到策略
- 策略将 PokerAction 发送到 PokerGame
- PokerGame 更新 GameState
- 游戏结束后(由 PokerGame 管理),将 GameResult 发送到分析脚本
- 用户查看分析脚本的输出
有一个第三方库可以执行 PokerGame 的所有功能。它与我自己在某些领域(例如卡值等)的域建模完全不匹配,但执行了我需要的大部分“难以编码”的功能(即重要的步骤 4 - 7).
一般设计问题 当面对这样的库时(消除了大量硬编码,但可能会限制相关项目中 future 的设计选择),您是否倾向于将项目的其余部分塑造到该库中?您是否重构 keystore 以符合您的领域模型?还是别的什么?
谢谢
迈克
最佳答案
如果我真的觉得我的领域模型更适合我的 future ,我会尝试创建一个抽象层来在第 3 方库和我自己的模型之间进行映射。这将使我现在能够利用该库,同时为我提供将来使用另一个第三方库或我创建的库替换它的灵 active 。
看看这个列表 design patterns ,尤其是Adapter Pattern .
关于python - 围绕一个第三方库设计我的域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764851/