使用接口确保每个类具有相同的属性

时间:2013-09-06 09:53:17

标签: .net vb.net oop inheritance interface

我在页面上有一个获取查询字符串值的属性,我需要在所有相关页面上。这些页面已经继承了一个基类,我不希望这里的属性不是所有继承这个基类的东西都需要这个特殊的属性。

我的想法是使用此属性创建一个接口,并让每个需要该属性的页面实现此接口。

这是一个好的做法,还是应该将基类继承到另一个只有这个属性的类中,然后让所有页面继承这个而不是基类?

谢谢

3 个答案:

答案 0 :(得分:2)

我假设属性的实现在需要它们的所有页面上都是相同的? 如果使用界面,所有页面都需要实现这一点,这将导致大量的复制/粘贴代码。 编写某种可以传递页面实例的提供程序类(如果需要)并使用此类来获取属性不是更好吗? 我认为你最好在继承中使用组合,因为如果你创建另一个基类,你将用另一个基类扩展你的页面层次结构。

答案 1 :(得分:0)

我会说它并不重要,但我更喜欢另一个继承级别,因为你只需要编写一次代码。使用界面你会更灵活,也许你想在某些情况下没有自动属性,但需要检查null或类似的东西。

因此,如果它总是相同的属性,那么使用继承的第二个基类,如果你在getter或setter中有不同的检查,那么请使用接口。

答案 2 :(得分:0)

接口不需要您复制代码!你可以使用委托。除了一种方式,这与接受的答案类似。接口可用于将合同公开给其他类,以允许它们以一致且强大的方式与您的类进行交互。一个关键问题就是,外部代码是否想要“知道”Form是否具有该功能?

delegation-instead-of-inheritance