在下面的场景中,是否有使用接口的设计指南?
我可以在IDescription中声明DerivedClass,或者在ISomeInterface接口中声明,或者两者都声明。3选择,什么样的指导原则将帮助我决定哪一个是最好的。
public interface IDescription
{
String Description { get; }
}
public interface ISomeInterface
{
String Name { get; }
String Description { get; }
}
public class DerivedClass : Base, ISomeInterface, IDescription
{
public String Description { get; private set; }
}发布于 2014-07-01 16:07:32
依赖于具体的接口和它们的逻辑关系。没有针对每一种情况的普遍解决办法。你提到的2种选择在某些情况下是正确的:
如果接口派生并同时实现父接口和子接口,那么这种情况在编写得很好的代码中是非常罕见的。你总是可以避免的。如果您第二次为类本身指定接口,我看不出任何问题。同时,也没有利润。所以最好别这么做。
重要注意事项:不只是基于匹配的属性名称构建继承层次结构--它们可能是巧合的。在创建基类或接口之前,始终要考虑这是否是巧合或固定关系。否则,您将得到大量的接口,如IDescription、IName、IID等,这并不意味着任何事情,只会使代码变得复杂。
发布于 2014-07-01 16:06:07
如果description属性在这两种情况下都表示相同的语义对象,那么为了清楚起见,我将让ISomeInterface实现IDescription。如果它们在你的设计中不一定是一样的,那就不是。
发布于 2014-07-01 16:07:54
在这种情况下,设计准则基本上取决于需求。如果您在ISomewhere中声明了描述,那么您将被迫实现它的其他属性(在本例中是Name),甚至在不需要Name属性的类中也是如此。
另一方面,如果要使用ISomewhere的所有类都需要名称和描述属性,那么最好在单一位置ISomeWhere中使用它。
为了得到更精确的答案,您需要分析这些接口的使用位置。
https://stackoverflow.com/questions/24514710
复制相似问题