单例模式还是静态类

Posted 下士闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式还是静态类相关的知识,希望对你有一定的参考价值。

  什么时候使用单例模式,什么时候采用平台类方式提供静态对象呢?
  首先讲一下什么是和单例模式,
  首先,这个类在逻辑上面就是一个;只有一个实例;比如主席,全国只有一个,那么就可以设计为单例;
  其次,符合单例的逻辑后,判断一下当构造的一个类的时候,不需要外部通过构造参数的形式注入外部模块的时候,就可以使用单例模式。比如对于一个布莱尼茨方式的算法的封装,其内部的状态可以完全依赖于函数的签名(参数),那么可以是单例模式;因为内部依赖于外部的内容,最好是通过构造参数传入,而不要在其内部直接和外部模块发生关系;这种是因为测试角度会比较复杂,内部处理也会复杂,边界不清晰。
  然后讲一下通过Platform方式,提供静态的get/set函数,在static块中将所有的对象进行构造,也可以实现单例效果;而且开发效率增加,因为不需要记住类名,通过“.”的方式就可以找到对应的对象。但是这种方式语义没有单例模式.instance(),getInstance()清晰,因为Platform.XXX的方式无法让调用者明晰这是单例对象,除非约定。

以上是关于单例模式还是静态类的主要内容,如果未能解决你的问题,请参考以下文章

设计模式——单例模式

单例模式在另一个类可以调用吗?怎么调用?

单例模式

死磕GOF23之单例模式

Java单例模式详解

Java枚举单例模式比DCL和静态单例要好?