何时使用static类(工具类)

简介: 一个static类,指全部成员都是static方法构成的,而没有任何成员变量, 也称为Utility class 或者Utility Pattern [参考: Utility Pattern].它可以在程序中直接使用该类的方法,而不用实例化.static class相对单例有更好的性能,原因是它的方法不需要实例方法的动态绑定 (static方法本身不能被复写)。
一个static类,指全部成员都是static方法构成的,而没有任何成员变量, 也称为Utility class 或者Utility Pattern [参考: Utility Pattern].它可以在程序中直接使用该类的方法,而不用实例化.static class相对单例有更好的性能,原因是它的方法不需要实例方法的动态绑定 (static方法本身不能被复写)。 

static类可以看作某一组方法的集合,也能够更好的复用代码.static类各个方法应当是无状态的(stateless),即没有成员变量保存中间状态(结果),每个函数相互独立.所以很多人批评static类是面向过程开发思想的产物,应当极力避免使用。也有人使用某种方法将static看起来更加符合OOP [参考: OOP Alternative to Utility Classes],不过这种争论并没有太大的意义。

static类虽说不会生成实例,但它也会一定的开销,而且是会影响程序初始化过程的。另外也不能带静态成员变量,但如果有一些场景特别需要时,就要注意它对应用性能的影响。可以通过这篇文章了解一下: 应用程序启动速度优化

反观单例模式,它既符合面向对象的思想,也可以做到延迟初始化.但相对的它有稍大的性能开销。如果是频繁使用的对象可能会有些影响。
horky
+关注
目录
打赏
0
0
0
0
18
分享
相关文章
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
78 0
|
7月前
|
【Java】static 修饰成员方法
【Java】static 修饰成员方法
|
10月前
|
java-基础-Interface、abstract类、Static class 、non static class的区别
【4月更文挑战第5天】Java中的接口、抽象类、静态类和非静态类各具特色:接口仅含抽象方法和常量,用于定义行为规范;抽象类可包含抽象和非抽象方法,提供部分实现,支持多继承;静态内部类不依赖外部类实例,可独立存在,访问外部类的静态成员;非静态内部类持有关联外部类引用,能访问其所有成员。这些机制根据设计需求和场景选择使用。
78 6
Java-关于main函数的修饰符(为什么要带public和static)
关于Java主函数的修饰符(为什么要带public和static) public修饰符 public是函数的权限,决定了该函数是否可以被外部的函数调用
util工具类中的方法为什么要用static修饰?
关于static学习的次数真的很多,每次搞得好像似懂非懂,这次就来一次深刻认识
264 0
Java静态方法Static继承问题
Java静态方法Static继承问题
130 0
第12篇:Java 的访问修饰符(public、protected、private)、封装、继承
🍀public: 在所有类中都是可见的 🍀protected: 仅在自己的包中、自己的子类中可见 🍀package-private(没有修饰符): 仅在自己的包中可见 🍀private: 仅在自己的类中可见
377 0
第12篇:Java 的访问修饰符(public、protected、private)、封装、继承
java59-static修饰内部类
java59-static修饰内部类
120 0
java59-static修饰内部类