gpt4 book ai didi

c# - 具有虚拟方法的静态抽象对象

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:10 24 4
gpt4 key购买 nike

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

我有几个具有相同属性、方法等的对象。唯一不同的是它们的名称、属性值和方法的实现。他们还需要方法的通用默认实现。所以马上,接口(interface)是不可能的。

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

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

因此,例如,上面引用的对象是(为了简单起见)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;
}

我该怎么做呢?我想让它们保持静态,这样我就不会拥有相同对象的多个实例,当它们都完全相同时,真的。

我使用单例吗?工厂模式?

我不知道该往哪个方向发展(如果有的话)。也许我想多了,有一个非常简单的解决方案/

最佳答案

您想谨慎使用静态类。静态类有明显的缺点,例如无法利用类继承的多态性,因为您不能从静态类继承。实际上,您唯一想要使用静态类的情况是,当您拥有一组相关工具之类的东西时,您希望在整个应用程序中使用这些工具,并且您不需要为这些工具维护任何状态。想想 System.Math 类,例如:一组可以在应用程序中的任何地方使用的数学函数。拥有该类的实例实际上没有任何意义,而且会相当麻烦且没有必要。

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

关于c# - 具有虚拟方法的静态抽象对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38831869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com