C#控制台应用程序会话/存储

时间:2009-05-14 17:39:22

标签: c# oop console

在控制台应用程序中实现psuedo-session /本地存储类的最佳方法是什么?基本上,当应用程序启动时,我将接受一些我希望在应用程序运行时为每个类提供的参数。我以为我可以创建一个静态类并在应用程序启动时初始化值,但是有更优雅的方式吗?

6 个答案:

答案 0 :(得分:3)

我通常创建一个名为'ConfigurationCache'的静态类(或类似的东西),可用于提供应用程序范围的配置设置。

请记住,您不希望太过于使用全局变量。我认真地建议您查看您的设计,并通过方法参数传递您需要的内容。您的设计应该是这样的,每个方法都会收到所需内容的参数(参见代码完成2 - Steve McConnell)。

这并不是说静态类是错误的,而是问自己为什么需要将参数传递给各种类和方法。

答案 1 :(得分:1)

如果您想要使用命令行参数(或其他一些超级设置)并将它们放在您的整个应用程序可以看到的某个位置,我不知道为什么您会认为将它们放入“不优雅”应用程序启动时的静态类。这听起来就像你想做的那样。

答案 2 :(得分:1)

如果你需要一个可以在代码中传递的对象,你可以使用单例设计模式,但是静态类也很好。

答案 3 :(得分:1)

坦率地说,我认为最优雅的方式是重新考虑你的设计以避免“全局”变量。应该创建类或接收需要构造的数据;方法应对这些数据进行操作。你通过创建一个或多个类需要完成工作的全局变量来违反封装。

答案 4 :(得分:0)

我建议可能实现一个单例类来管理你的伪会话数据。您将能够全局访问数据,同时确保只有一个类实例存在,并在对象之间共享时保持一致。

MSDN implementation of a singleton class

答案 5 :(得分:0)

将您的数据视为所有类所需的配置文件。该文件可以从每个类访问 - 因此通过静态类公开数据没有任何问题。

但是每个类都必须知道配置文件的路径,并且路径的更改会影响许多类。 (当然,路径最好只是一个类中的常量,只有一个类可以被所有需要路径的类引用。)因此,更好的解决方案是创建一个封装对configuartion文件的访问的类。现在,每个类都可以创建此类的实例并访问该文件的配置数据。由于您的数据不受文件支持,因此您必须构建类似monostate的内容。

现在你可以开始考虑类耦合了。对你有用吗?您是否计划编写单元测试,是否必须模拟配置数据?是?在这种情况下,您应该开始考虑使用依赖注入并仅通过interace访问数据。

所以我建议使用接口使用依赖注入,我将使用monostate模式实现接口。

相关问题