如果我知道一个特定的类只会在我的程序中实例化一次,那么最好是使用静态方法和变量来代替那个特定的类吗?如果不是,如果只有一个该类的实例,那么使用实例方法和变量优于静态方法会带来什么好处?Java - 只有一个类的实例:使用静态方法?
2
A
回答
3
4
这取决于你需要班级做什么以及将来可能需要什么。这也取决于有多少人会看到或使用此代码。如果这个代码只会被你看到和使用,比选择一个实现并且一直跟随它,那么迫使你自己切换到另一个实现,因为练习可能是照亮的。
假设你的代码会被看到或另一个程序员使用:
如果对象是,你需要在测试中模仿(如数据库连接,例如)的东西,然后它会是最好能有你的方法是实例方法,并找到一些其他的策略来确保你只有一个。 (例如,你的类将你的程序的输出写入excel文件),然后将你的类的实例传递给任何需要它们的方法一个很好的方法可以帮助你的代码更加灵活(例如,如果你以后决定要生成html输出,你所要做的就是编写一个你的excel编写器的姊妹实现,然后通过它)。
如果您几乎100%确定您的代码永远不需要被模仿(又名“模拟”),并且您永远不需要利用多态性(例如Java中的Math类),那么静态方法将可能会很好,但这是一个罕见的情况。
相关问题
- 1. 只调用一个实例的类的静态方法
- 2. 只有公共静态方法与实例化类的类
- 3. PHP:调用一个实例的静态类中实例的私有方法
- 4. Java - 使用该类实例引用静态方法
- 5. Java - 从静态方法使用实例类?
- 6. 类实例调用静态方法
- 7. 静态方法的Java实例变量
- 8. Java:在静态方法中从超类创建一个子类的实例
- 9. C#类实例的静态方法VS静态类的内存使用情况
- 10. Java静态/实例方法优化
- 11. 使用基类的静态方法实例化一个继承类
- 12. 通用静态类有多个实例?
- 13. 从静态方法实例化子类
- 14. 静态方法vs静态实例
- 15. 有没有办法让静态方法访问一个类的所有非静态实例?
- 16. 只有静态方法的类模块
- 17. 创建一个类的静态实例
- 18. 从另一个类从静态方法访问实例变量
- 19. 如何在Java上的类实例上抑制静态方法?
- 20. Java - 将调用静态方法调用所有实例上的方法吗?
- 21. 将静态方法放入静态类并将实例方法放入静态类中有什么区别?
- 22. SharePoint TimerJob:在类/静态方法的实例中使用SPListItem.Update()
- 23. Java:喜欢实用类取决于类实例或静态方法?
- 24. 需要在静态和非静态方法中使用实例
- 25. 在java中的静态方法vs实例方法的决定?
- 26. 从静态方法调用所有实例的接口方法
- 27. 静态方法可能只对一类
- 28. Mongoose'静态'方法与'实例'方法
- 29. 静态方法和实例方法C#
- 30. Python:使用类方法作为静态,当它实现为实例方法
你*可以*使它成为'enum'。但为什么**限制自己?如果你需要两个实例,或者三个呢? –
如果你真的知道它会是一个实例,那么你应该使用(Singleton)模式 –
这个问题可能是有用的:https://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton- pattern?noredirect = 1&lq = 1 –