|
|
1
3
在学习设计模式的同时,还应该了解一些常见的反模式,从而了解模式的来源。
在可能的情况下,我的首选技术不是向用户公开IDisposable对象,而是公开单个方法(调用它)
例如,假设我有一个文件IO需求,需要定期打开相同的文件(因此,如果用户忘记调用Dispose,我不能等待垃圾收集器调用Finalize)。
打电话的人可以说
请注意,这与
尽管如此,这种模式并不总是合适的,因为有时您需要的资源要比仅仅一个方法调用持续更长的时间,但是如果您发现有机会使用它,就这样做。 反正我已经完全偏离主题了,回到你刚才问的问题上来。
我不会说剩下的有什么特别的模式,它们是不言自明的。 |
|
|
2
0
我不同意上面的说法。我从不建议允许GC进行清理并隐式地处理对象和资源。这有点像在酒店等女佣过来帮你拿湿毛巾;这终究会发生,但正确的做法是自己拿起来挂起来。 确定性地处理对象并将这些资源的作用域保持在尽可能小的范围内,将有助于实现最精简和最高效的应用程序,更不用说对于阅读代码的开发人员来说,更明确地处理资源和更好地阅读代码。就像一个故事的开始和结束,一个人可以在一个地方看到一切。我尽可能晚地实例化对象,并在使用后尽快处理它。对对象显式调用.Dispose或使用自动调用.Dispose方法的Using块是(2)清理的好方法。
接口的全部目的是为类要实现的方法、属性、事件等创建一个guidline,但不提供如何实现的细节。那由你决定。如何实现specefic接口本身没有“模式”。不要被IDisposable接口抛出。在中创建接口时与.NET,将为您创建丰满的代码 不 典型的界面,在现实中可以完全改变你所需要的。 我认为您可能会对实现.NET框架中的接口感到困惑,但您需要了解接口的概念,而不仅仅是框架中可用的接口。如果您真的想查看.NET Framework中的接口是如何实现的示例,请查看MSDN或反编译实现这些接口的其他Framework对象,以了解Microsoft是如何实现这些接口的。
所以你不能只看.NET框架中的接口,以及如何将某种模式应用到它们的实现中。实现细节、模式等由实现类决定,只要接口的细节足够,那么这就是问题所在。 希望这有点帮助。。。 |