【发布时间】:2013-06-20 12:59:57
【问题描述】:
一般来说,为什么要为每个界面争取三到五个成员?
然后,这样的事情有什么问题?
interface IRetrieveClient
{
Client Execute(string clientId);
}
interface ISaveClient
{
bool Execute(Client client);
}
interface IDeleteClient
{
bool Execute(string clientId);
}
当我看到这个时,它会尖叫“反模式!”因为接口没有完成任何事情,尤其是当应用程序的设计者打算让每个接口与实现它的类具有一对一的关系时。
Read:一旦实现了接口,就永远不会再重新实现它。现在,我没有设计这个系统,在我看来他们想要做的是实现某个版本的命令模式,但是在与开发人员交谈时,他们似乎并没有得到它。
【问题讨论】:
-
为什么要在界面中争取一些成员?以
IDisposable为例 -
我会说一个界面应该有尽可能多或尽可能少的成员,因为它对您的应用程序设计有意义。在这种情况下,如果您的应用程序设计具有可以为第三方检索/读取或只写的实现,那么它是有意义的。另请注意,您也可以通过这种方式创建组合接口(例如,
interface IChangeClient : ISaveClient, IDeleteClienet) 编辑:也就是说,如果您的应用程序设计不需要限制某些实现不能做其中一些事情,那么它可能是将其拆分为 3 个接口不必要的复杂性。 -
IDisposable 完全有意义,命令模式也是如此,但我不知道您为什么不通过具有 get、save 和 delete 成员的 IClient 公开此类内容。
-
在这种情况下,您似乎可以轻松拥有一个界面,因为它不会违反 SRP(请参阅我的回答)。但是只有一种方法对我来说似乎没有任何问题或“反模式”
-
您应该阅读 SOLID 原则中的接口隔离原则。最好的解释这一点。
标签: c# architecture interface interface-design