首页 > 代码库 > 单例模式还是静态类

单例模式还是静态类

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

单例模式还是静态类