|
|
1
3
所示的实现在构造和管理对象的方式上是不同的。在第一个示例中,每次调用
从您所说的两个版本都可以工作的事实来看,我冒昧地猜测,存储库对象不保持状态,只是数据库调用的代理。在这种情况下,可能不会有太大的区别。 然而 ,这两种方法的性能和内存配置文件非常不同。虽然过早的优化是一件坏事,而且常常是浪费时间,但我不会这样分类,因为在每次属性调用时创建一个新的存储库显然是以后的性能问题,或者更糟的是,如果将状态引入存储库,仍然会引入难以跟踪的错误。创建更少的对象将最终减少垃圾收集器的压力,但除非你正在创建数百万个对象,否则这将是一个微不足道的差异。 总之,第二个例子是更好的,考虑到这一点,我现在没有看到真正的问题。 |
|
|
2
2
第一个示例每次都创建一个新的XXXRepository对象实例,第二个实例将句柄返回到已经存在的对象,因此第二个实例的性能应该更好,并且使用较少的CPU,因为不需要分配新内存。 更大的问题是,除非存储库类完全是静态的或其他的,否则这两个场景会产生完全不同的结果。如果存储库类是某种到数据库的接口,那么选项1不需要是线程安全的,而选项2需要是线程安全的。 |
|
|
Tom Buck · c#程序在整数列表上冻结 7 年前 |
|
|
Ran Lavi · 在c中初始化结构的指针++ 7 年前 |
|
|
Js_zero · 在c++中实例化对象有几种方法,它们之间有什么区别 7 年前 |
|
|
jfernal · 节点。js在加载其他函数之前等待初始化变量 7 年前 |
|
|
Victor · 在javafx中运行时更改标签文本 7 年前 |
|
|
blubb · 在Kotlin中是否有更惯用的方法来初始化此映射? 7 年前 |
|
|
Bing Bang · 初始化包含字节数组的结构数组 7 年前 |