何时使用static类(工具类)
2016-02-06 05:51
288 查看
一个static类,指全部成员都是static方法构成的,而没有任何成员变量, 也称为Utility class 或者Utility Pattern [参考: Utility Pattern].它可以在程序中直接使用该类的方法,而不用实例化.static class相对单例有更好的性能,原因是它的方法不需要实例方法的动态绑定 (static方法本身不能被复写)。
static类可以看作某一组方法的集合,也能够更好的复用代码.static类各个方法应当是无状态的(stateless),即没有成员变量保存中间状态(结果),每个函数相互独立.所以很多人批评static类是面向过程开发思想的产物,应当极力避免使用。也有人使用某种方法将static看起来更加符合OOP [参考:OOP Alternative to Utility Classes],不过这种争论并没有太大的意义。
static类虽说不会生成实例,但它也会一定的开销,而且是会影响程序初始化过程的。另外也不能带静态成员变量,但如果有一些场景特别需要时,就要注意它对应用性能的影响。可以通过这篇文章了解一下:应用程序启动速度优化。
反观单例模式,它既符合面向对象的思想,也可以做到延迟初始化.但相对的它有稍大的性能开销。如果是频繁使用的对象可能会有些影响。
static类可以看作某一组方法的集合,也能够更好的复用代码.static类各个方法应当是无状态的(stateless),即没有成员变量保存中间状态(结果),每个函数相互独立.所以很多人批评static类是面向过程开发思想的产物,应当极力避免使用。也有人使用某种方法将static看起来更加符合OOP [参考:OOP Alternative to Utility Classes],不过这种争论并没有太大的意义。
static类虽说不会生成实例,但它也会一定的开销,而且是会影响程序初始化过程的。另外也不能带静态成员变量,但如果有一些场景特别需要时,就要注意它对应用性能的影响。可以通过这篇文章了解一下:应用程序启动速度优化。
反观单例模式,它既符合面向对象的思想,也可以做到延迟初始化.但相对的它有稍大的性能开销。如果是频繁使用的对象可能会有些影响。
相关文章推荐
- Git幕后的“故事”
- Git幕后的“故事”
- 快速排序
- 我与小娜(06):量子通信是什么?
- 金鳞通讯呼叫中心及企业融合通信产品系列
- HDU 5595 GTW likes math
- Leetcode Maximal Square
- soap
- HDU 5590 ZYB's Biology
- 4d tensor
- HDU 5585 Numbers
- 今天把PHP复习了一下.
- Android学习总结-第一篇
- C# 二叉查找树实现
- 配置SSH免密码验证
- POJ 3176 Cow Bowling 动态规划
- theano中的concolutional_mlp.py学习
- union,union all, Intersect和Minus [转]
- POJ 1523 解题报告
- 快速排序