静态抽象对象与虚方法

时间:2016-08-08 14:29:30

标签: c# .net static virtual abstract

我正在从事个人项目,但我遇到了一个问题。

我有几个具有相同属性,方法等的对象。唯一不同的是它们的名称,属性值和方法的实现。他们还需要常见的默认方法实现。所以马上,界面是不可能的。

所以我创建了一个带有属性的基类,"默认"方法。但是这个基类需要是抽象的。这些方法是虚拟的,因此可以覆盖它们。

我需要它们是静态的原因是对象将是其他对象的属性。

因此,例如,上面引用的对象是(为简单起见)objX,objY,objZ。他们来自他们的基础,objW。

objContainer是一个完全不相关的对象,但它有一个objW类型的属性,它是objX,objY,objZ的一个实例。

objX,objY和objZ 永远不会更改。他们的属性都是只读的。因此实例objContainer的多个对象将具有objX,objY或objZ。

public class objContainer1
{
    objW processor = new objY; 
}
public class objContainer2
{
    objW processor = new objY; 
}

我该怎么做呢?我想让它们保持静止,所以我不会有相同对象的多个实例,当它们完全相同时,真的。

我是否使用单身人士?工厂模式?

我迷失了哪个方向(如果有的话)。也许我过度思考它,这是一个非常简单的解决方案/

1 个答案:

答案 0 :(得分:6)

您希望谨慎使用静态类。静态类有明显的缺点,例如无法利用类继承的多态性,因为您无法从静态类继承。实际上,你唯一想要使用静态类的时候就是你想要在你的应用程序中提供一组相关工具,而你不需要维护任何状态。想想System.Math类,例如:一组数学函数,您可以在应用程序的任何位置使用它们。拥有该类的实例并没有任何意义,这将是相当麻烦和不必要的。

我建议坚持使用非静态类并创建这些类的实例。如果您应该只有一个类的实例,那么您应该按照建议使用单例。