类设计,接口或具体类

时间:2010-10-28 04:11:14

标签: c# interface abstract-class

关于接口与具体类的使用,我遇到了问题 我有一个实现一些常见属性/方法的基类。现在我有两个可能的扩展。这个基类可以有一些名为Parameters的属性,或者它可以有另一个名为Children的属性,或者它可以同时具有这两个属性。

我看到它的方式我可以创建2个接口(IParameterised,IParent)或者我可以实现三个子类(ParameterObject,ParentObject,ParentParameterObject)。问题是,哪一个是更好的设计。我现在倾向于接口方法,但我不是一个有经验的程序员,所以欢迎任何建议

2 个答案:

答案 0 :(得分:2)

我认为你的“倾向”本身就是正确的,其他人会同意: http://www.artima.com/lejava/articles/designprinciples4.html

答案 1 :(得分:1)

有关此主题的一些背景知识可以帮助您:Liskov substitution principle(更多here)和composition over inheritance的概念。

简而言之,不要实现3个子类(即继承方法):如果你需要2或3个额外的公共属性/方法,会发生什么?只需添加2个,您就会看到15种左右的独特组合。对于合成,请查看statestrategy模式。