【发布时间】:2021-01-12 01:11:36
【问题描述】:
我正在设计一个身份验证框架。我需要框架的用户来实现数据访问逻辑,因为它不是框架的主要目的,我希望允许多种数据访问方法(SQL、NoSQL、缓存等)。我不在我的框架内实现它。我的框架通过一个名为 IUserStore 的接口使用此逻辑,但问题是,我的接口中有某些方法仅在某些功能处于活动状态时才使用,否则不会使用。例如,只有在启用双因素身份验证时,框架才会尝试通过 GetTwoFactorInfo 方法访问两个因素信息。
我的问题是关于接口隔离原则。是否可以保留界面原样并在文档中解释用户需要实现 GetTwoFactorInfo 只有当用户想要使用双因素身份验证并抛出 NotImplementedException 否则?或者我应该为每个可选功能分离接口并在文档中解释用户应该实现该接口并将其注册给服务提供商以便能够使用该功能?第二种方法的一个问题是,当将实现这些接口的服务注入到构造函数时,我需要检查这些功能是否处于活动状态,否则我会收到错误,因为服务未注册并且我正在尝试从服务提供商访问这些服务。这导致我的框架类更加复杂。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
这是一个很好的问题,但您使用了不适当的语言标签将其关闭
-
你认为我应该怎么做?我认为这是一个很好的设计问题,每个设计问题都是基于意见的,所以我无法改变这一事实。
-
您有 2 张重新投票,因此可以保存
-
感谢大家的努力,我现在希望 stackoverflow 社区可以对新人非常温和:D
标签: oop design-patterns interface frameworks