我正处于一个内部使用的新项目的设计阶段--这个软件永远不会被“发货”。我非常肯定地知道,我们将在未来的项目中增加更多的功能。如果我等一下,这个项目就永远做不成了。我正在通过设计接口来接近这个项目。我希望在代码中使用接口,这样我就可以检查该类并执行某些操作。我还想在某个接口的所有类上执行操作。在某些接口中,类将有不同的逻辑来实现结果。接口对此很有意义。
我的两个问题:
发布于 2020-02-17 16:50:54
对第一个问题的答复:
应该是稳定的是的。要实现这一点,请创建重点非常突出的接口。这意味着1接口应该描述非常有限的功能/只有很少的属性。然后有一个复杂的接口:将它们合并成一个组合的接口。
例如,ITree和IPlant是一个非常广泛的描述,不应该存在。IEverGreen和IDeciduous只是稍微好一点而已。你应该看的是更小的部分,比如:
IHaveRoot {}
IRePlantable {}
IHaveLeaves{}然后:
ILeafAndRootOwner : IHaveRoot, IHaveLeaves对第二个问题的答复:
这是有意义的,因为您为装饰图案保留了一个开放的可能性,或者在定义一个新的实现时将现有的实现标记为过时。所有其他引用接口的.cs文件都不需要更改!
发布于 2020-02-17 17:06:26
每个人似乎都说你的界面需要稳定。如果您需要在后面添加其他功能,那么通常要做什么呢?继承基本接口并添加?
如果继承给定接口的组件不用于API (这意味着插件必须继承此接口才能与应用程序通信),那么修改接口就没有问题了
在我的情况下,如果我需要扩展内部插件而不破坏客户插件的兼容性(这两个插件都共享相同的接口来工作),我将执行以下操作:-创建一个扩展接口-继承插件类中的扩展接口
在某些情况下(目前),接口只能由一个类实现。在这种情况下,使用接口仍然有意义吗?
您不需要任何东西的接口,这是肯定的;然而,预先规划您将来可能想要扩展的内容,或者单元测试将告诉您您肯定需要一个接口。例如,通过用接口替换应用程序并使用下模注入所需的实现,可以将应用程序与特定的依赖项解耦。
总之,正如@所说:这取决于您正在努力实现什么,您应该为软件的更改做好准备。
如果你说的是一个简单的工具,比如只读取一个文本文件,让我们来计算单词,那么在它上花费大量的精力是没有意义的。
https://stackoverflow.com/questions/60266476
复制相似问题