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

时间:2010-09-21 22:03:00

标签: python oop

我正在使用以下用例的扑克分析工具:

  1. 用户使用一种方法创建策略类:输入GameState,输出PokerAction
  2. 用户运行分析脚本,在各种策略子类(即各种策略)之间启动PokerGame
  3. PokerGame制作随机牌组
  4. PokerGame将GameState发送给策略
  5. 策略将PokerAction发送给PokerGame
  6. PokerGame更新GameState
  7. 游戏完成后(由PokerGame管理),将GameResult发送到分析脚本
  8. 用户评论分析脚本的输出
  9. 有一个第三方库可以执行所有PokerGame功能。它与我自己在某些领域的域建模(例如卡片值等)完全不匹配,但执行了我需要的大部分“难以编码”的功能(即非平凡的步骤4 - 7)。

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

    谢谢,

    麦克

2 个答案:

答案 0 :(得分:2)

如果我真的觉得我的领域模型更适合我前进,我会尝试创建一个抽象层来映射第三方库和我自己的模型。这将允许我现在利用该库,同时为我提供将来与另一个第三方库或我创建的库替换它的灵活性。

查看design patterns的此列表,尤其是Adapter Pattern

答案 1 :(得分:1)

我不会将我的项目紧密地耦合到库中,而是尝试抽象功能并使用其间的一个或多个对象来耦合两者。我想到了调解员和/或门面模式。