在过去一年左右的时间里,我一直认为如果一个方法可以是静态的,那么为了使它成为静态的,因为这可以带来性能上的好处,因此我在应用程序中最终得到了一些静态类。
我已经了解到,性能优势通常不足以值得,而且可以使静态方法的区别,也许不应该从设计的角度来看,如果它们更加特定于对象,那么而不是类型相关的问题
作为一个例子,我最近创建了一个FileRepository类,它实现了我们自己的File类的存储库模式(例如导入文件)。此类不是静态的,必须先创建存储库对象,然后才能访问它。
我的问题是,所有我的旧静态调用,现在是2行(除非我可以在本地范围内重用该对象)。存储库对象(尚未)没有状态,因为它通过线程静态变量使用数据库访问。
我的问题是,人们对在类上拥有线程静态Current属性的看法是什么,get访问器在第一次调用时初始化对象?据我了解,这仍然可以避免静态类的缺陷,例如无法通过接口实现通用功能,但仍然提供对存储库对象的单行调用的简易性?
只是试着调整我的做法和思维方式。
发布于 2019-06-21 10:14:28
您需要解释您所谈论的性能下降程度。我们在谈论微秒吗?
通常,可以通过运行探查器并查找有问题的代码来提高应用程序性能。以ANTS分析器为例。
我经常发现数据库访问的罪魁祸首是70%的时间。
发布于 2019-06-21 10:59:21
不使用静态内容并始终直接引用依赖项的一个好处是可以轻松地模拟和单元测试对象。如果直接引用静态类或当前属性,则会失去此功能。
https://stackoverflow.com/questions/-100001268
复制相似问题