【发布时间】:2018-10-04 09:36:07
【问题描述】:
我看到了接口的好处,能够通过合约添加新的实现。
我没有看到以下问题: 想象一下,您有带有方法“startTransaction”的接口 DB。 一切都很好,你在 MySQL、PostgreSQL 中实现它。但是明天你转移到 mongodb - 那么你就没有事务支持了。
你是做什么的? 1)空方法 - 不好,因为你认为你有交易但你没有 2) 创建你自己的 - 然后你应该有一些与常规“startTransaction”方法不同的参数。
除此之外,有时简单的界面根本不起作用。 示例:您需要针对不同实现的附加参数。
【问题讨论】:
-
这称为接口隔离原则。如果您不仅有跨国数据库,则应将
transnational方法移至子接口interface trasactionalDB extends DB。具有事务的数据库应该从trasactionalDB继承,而不是直接从DB继承。 -
有什么意义,我不能在 Mongo 中使用事务。如果它对我没有任何帮助,为什么还要使用接口隔离原则?
-
Mongo 将直接实现
DB接口,无需与事务相关的方法。 -
我的 MongoDB 版本不支持事务。
-
正如我在回答中试图指出的那样,拆分接口,这样您就不必实现事务功能。 IE。 ITransactable 接口可以强制执行事务功能,而不是其他任何东西。这样,就不要为您的 mongo-db 使用 ITransactable
标签: interface