我应该使用多个静态类,最多只有一个公共方法

时间:2014-12-19 08:43:56

标签: c# class static

我正在为C#中的混凝土建筑物编写结构细节(CAD)软件。我定义了数百个static个类,每个类都有一个public method,如果需要,还有一些private methods。这些静态类中的每个方法都可以完成部分工作。它们是从一个名为Building.cs的神静态类中调用的。

例如,一个类看起来像这样:

public static partial class GetMainRebars
{
    public static void GetMainRebars()
    {
    }

    // other possible variables and private methods
}

与其他类似程序相比,该程序的运行速度非常快。但在我内心深处,看着上面的代码,我觉得这个设计模式还有些问题。也许我会在维护方面遇到问题,或者......?我自学了编程,所以在快速自学过程中我可能错过了许多核心原则。你能详细说明上述模式的缺点和优点吗?

还有一个与模式相关的新手问题。让我们说我在这样一个类中定义一个静态变量,它会在程序的生命周期内保留在内存中吗?没有处置,无论如何?可以吗?

1 个答案:

答案 0 :(得分:1)

确定。首先,我想说这是一个非常糟糕的模式(如果我甚至可以称之为)。你不应该用单一方法有很多静态类......甚至不会谈论单神静态类。您应该阅读SOLID原则。现在虽然我会给你一些指示。

不要使用1000个小的静态类,而是尝试对其中的一些进行分组,这样可以减少一些数字(如果它们具有相似的功能,或者当然没有其他功能)。之后,您可以将这些静态类转换为应该从接口派生的服务类。例如,如果您有BuildingService类,则可以从IBuildingService派生它。这样,如果由于某种原因你决定将这个类转换为另一个,你可以做到这一点,而不必在1000个地方但只在一个地方更改它。

确定将使用每个接口的哪个实现是IoC(例如Unity)的工作。也应完全删除神级。拥有一个可以完成1000件事的类违反了关注模式的分离,如果使用其他类中实现的方法来实现它们并不重要。如果你真的需要这个功能,你可以创建一个存储一组服务的类,以后可以调用它。

我希望这能指出你正确的方向。