我正在使用以下用例的扑克分析工具:
有一个第三方库可以执行所有PokerGame功能。它与我自己在某些领域的域建模(例如卡片值等)完全不匹配,但执行了我需要的大部分“难以编码”的功能(即非平凡的步骤4 - 7)。
一般设计问题 当面对这样的库(消除了大量硬编码,但可能会限制相关项目中的未来设计选择)时,您是否倾向于将项目的其余部分模塑到库中?您是否重构密钥库以符合您的域模型?还是别的什么?
谢谢,
麦克
答案 0 :(得分:2)
如果我真的觉得我的领域模型更适合我前进,我会尝试创建一个抽象层来映射第三方库和我自己的模型。这将允许我现在利用该库,同时为我提供将来与另一个第三方库或我创建的库替换它的灵活性。
查看design patterns的此列表,尤其是Adapter Pattern。
答案 1 :(得分:1)
我不会将我的项目紧密地耦合到库中,而是尝试抽象功能并使用其间的一个或多个对象来耦合两者。我想到了调解员和/或门面模式。