![]() |
1
3
所示的实现在构造和管理对象的方式上是不同的。在第一个示例中,每次调用
从您所说的两个版本都可以工作的事实来看,我冒昧地猜测,存储库对象不保持状态,只是数据库调用的代理。在这种情况下,可能不会有太大的区别。 然而 ,这两种方法的性能和内存配置文件非常不同。虽然过早的优化是一件坏事,而且常常是浪费时间,但我不会这样分类,因为在每次属性调用时创建一个新的存储库显然是以后的性能问题,或者更糟的是,如果将状态引入存储库,仍然会引入难以跟踪的错误。创建更少的对象将最终减少垃圾收集器的压力,但除非你正在创建数百万个对象,否则这将是一个微不足道的差异。 总之,第二个例子是更好的,考虑到这一点,我现在没有看到真正的问题。 |
![]() |
2
2
第一个示例每次都创建一个新的XXXRepository对象实例,第二个实例将句柄返回到已经存在的对象,因此第二个实例的性能应该更好,并且使用较少的CPU,因为不需要分配新内存。 更大的问题是,除非存储库类完全是静态的或其他的,否则这两个场景会产生完全不同的结果。如果存储库类是某种到数据库的接口,那么选项1不需要是线程安全的,而选项2需要是线程安全的。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |