python - 围绕一个第三方库设计我的域模型

标签 python oop

我正在开发一个具有以下用例的扑克分析工具:

  1. 用户使用一种方法创建策略类:输入 GameState,输出 PokerAction
  2. 用户运行分析脚本,该脚本在各种策略子类(即各种策略)之间启动 PokerGame
  3. PokerGame 生成随机牌组
  4. PokerGame 将 GameState 发送到策略
  5. 策略将 PokerAction 发送到 PokerGame
  6. PokerGame 更新 GameState
  7. 游戏结束后(由 PokerGame 管理),将 GameResult 发送到分析脚本
  8. 用户查看分析脚本的输出

有一个第三方库可以执行 PokerGame 的所有功能。它与我自己在某些领域(例如卡值等)的域建模完全不匹配,但执行了我需要的大部分“难以编码”的功能(即重要的步骤 4 - 7).

一般设计问题 当面对这样的库时(消除了大量硬编码,但可能会限制相关项目中 future 的设计选择),您是否倾向于将项目的其余部分塑造到该库中?您是否重构 keystore 以符合您的领域模型?还是别的什么?

谢谢

迈克

最佳答案

如果我真的觉得我的领域模型更适合我的 future ,我会尝试创建一个抽象层来在第 3 方库和我自己的模型之间进行映射。这将使我现在能够利用该库,同时为我提供将来使用另一个第三方库或我创建的库替换它的灵 active 。

看看这个列表 design patterns ,尤其是Adapter Pattern .

关于python - 围绕一个第三方库设计我的域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764851/

相关文章:

python - 如何在 jupyter + pandas 中的每个 scatter_matrix 上添加标题

python - Django-ckeditor 无法在 html 中正确显示

C++ 预期左大括号以及重新定义错误

javascript - 从构造函数将对象添加到数组

python - 访问模型的列时,由 'column_property' 定义的 SQLAlchemy 列未显示

python - 根据多个条件替换列中的所有值

python - 使用 PySpark 连接两个 JSON 字符串列

javascript - 使用原型(prototype) JavaScript - 最佳实践

python - 为什么描述符(在Python中)不能插入(放置)到已经初始化的对象中?

php - 是否可以动态扩展一个类?