何时使用static类(工具类)
2017-07-08 13:23
176 查看
一个static类,指所有成员都是static方法构成的。而没有不论什么成员变量, 也称为Utility class 或者Utility Pattern [參考: Utility Pattern].它能够在程序中直接使用该类的方法,而不用实例化.static class相对单例有更好的性能,原因是它的方法不须要实例方法的动态绑定 (static方法本身不能被复写)。
static类能够看作某一组方法的集合,也能够更好的复用代码.static类各个方法应当是无状态的(stateless),即没有成员变量保存中间状态(结果),每一个函数相互独立.所以非常多人批评static类是面向过程开发思想的产物。应当极力避免使用。
static类能够看作某一组方法的集合,也能够更好的复用代码.static类各个方法应当是无状态的(stateless),即没有成员变量保存中间状态(结果),每一个函数相互独立.所以非常多人批评static类是面向过程开发思想的产物。应当极力避免使用。
也有人使用某种方法将static看起来更加符合OOP [參考:OOP Alternative to Utility Classes]。只是这样的争论并没有太大的意义。
static类虽说不会生成实例,但它也会一定的开销,并且是会影响程序初始化过程的。另外也不能带静态成员变量。但假设有一些场景特别须要时。就要注意它相应用性能的影响。能够通过这篇文章了解一下:应用程序启动速度优化。
反观单例模式,它既符合面向对象的思想。也能够做到延迟初始化.但相对的它有稍大的性能开销。
假设是频繁使用的对象可能会有些影响。
相关文章推荐
- 关于Java中何时使用static和工具类相关知识
- 何时使用static类(工具类)
- 使用static类(工具类)
- 练习使用工具类Collections
- 多线程编程:何时使用同步类
- 何时及如何使用异常
- [C++] 何时使用vector
- 何时应该使用struts?
- static readonly与使用const的区别
- 如何以及何时使用sIFR
- Asp.Net 中使用static 取代 application
- 何时该使用"委托"(Delegation)?
- 决定何时使用 DataGrid、DataList 或 Repeater(ASP.NET 技术文章)
- static 修饰的属性、方法、代码块的使用实例
- 关于何时使用接口
- USING STATIC IMPORTS FOR CONSTANTS AND METHODS(使用静态导入引用常量与方法)
- ATL中的可以单独使用的工具类
- 何时使用注解
- static方法无法使用mock object来模拟方法的动作?
- static修饰符的使用