Static Class or Objects
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
When to Use Static Classes in C#
很抱歉,如果这个问题毫无意义或者很愚蠢,我试图创建一个Windows服务,在这个服务中我只有几个类文件,每个类文件都有一些调用另一个类文件的函数。
例如
类文件1有一个创建类似电子邮件的方法
1 2 3 4 5 6 7 8 9 10 11 12 | public bool CreateEmail() { try { //code here } catch (Exception ex) { //Write to Log to create log call function from **another class file** } } |
还有很多这样的调用,我想知道使用静态类更好还是为每个类创建对象,调用方法更好,推荐哪种方法?
扪心自问
- 这个方法与你的对象有什么关系?
- 它是否改变了你的物体的状态。
如果它相关并且确实改变了对象状态,那么您应该在类中有这个方法。如果不是,那么您就不需要在类中有这个方法。
从外观上看,很明显,它不会改变任何状态,而是需要来自另一个对象的一些信息来发送邮件。因此,我肯定会将这个类设置为util类(静态类),并在需要时使用它。
考虑:
你需要做单元测试吗,如果是的话,静态类是不好的,如果你遵循测试能力的设计,就不能被模仿。
单一责任原则,不要把每一种方法都放在一个所谓的效用类中。将相关的方法分组到单独的类中,并遵循SRP。
类应具有有意义的名称。实用程序、实用程序或帮助程序不是有意义的名称
I would like to know if Using static class is better or creating object for each class and calling the methods will be better.
如果是多线程环境,并且日志记录要求在多个调用之间共享一些数据,那么为每个调用创建单独的实例。否则,转到静态类和方法。
如果您只使用类文件对方法进行分组,并且除了调用这些方法外,不需要类的实例,那么您应该使用静态类——这就是它们的用途。