在控制台应用程序中实现psuedo-session /本地存储类的最佳方法是什么?基本上,当应用程序启动时,我将接受一些我希望在应用程序运行时为每个类提供的参数。我以为我可以创建一个静态类并在应用程序启动时初始化值,但是有更优雅的方式吗?
答案 0 :(得分:3)
我通常创建一个名为'ConfigurationCache'的静态类(或类似的东西),可用于提供应用程序范围的配置设置。
请记住,您不希望太过于使用全局变量。我认真地建议您查看您的设计,并通过方法参数传递您需要的内容。您的设计应该是这样的,每个方法都会收到所需内容的参数(参见代码完成2 - Steve McConnell)。
这并不是说静态类是错误的,而是问自己为什么需要将参数传递给各种类和方法。
答案 1 :(得分:1)
如果您想要使用命令行参数(或其他一些超级设置)并将它们放在您的整个应用程序可以看到的某个位置,我不知道为什么您会认为将它们放入“不优雅”应用程序启动时的静态类。这听起来就像你想做的那样。
答案 2 :(得分:1)
如果你需要一个可以在代码中传递的对象,你可以使用单例设计模式,但是静态类也很好。
答案 3 :(得分:1)
答案 4 :(得分:0)
我建议可能实现一个单例类来管理你的伪会话数据。您将能够全局访问数据,同时确保只有一个类实例存在,并在对象之间共享时保持一致。
答案 5 :(得分:0)
将您的数据视为所有类所需的配置文件。该文件可以从每个类访问 - 因此通过静态类公开数据没有任何问题。
但是每个类都必须知道配置文件的路径,并且路径的更改会影响许多类。 (当然,路径最好只是一个类中的常量,只有一个类可以被所有需要路径的类引用。)因此,更好的解决方案是创建一个封装对configuartion文件的访问的类。现在,每个类都可以创建此类的实例并访问该文件的配置数据。由于您的数据不受文件支持,因此您必须构建类似monostate的内容。
现在你可以开始考虑类耦合了。对你有用吗?您是否计划编写单元测试,是否必须模拟配置数据?是?在这种情况下,您应该开始考虑使用依赖注入并仅通过interace访问数据。
所以我建议使用接口使用依赖注入,我将使用monostate模式实现接口。