0.定义
单例模式(Singleton Pattern), 其定义如下:
Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类
只有一个实例, 而且自行实例化并向整个系统提供这个实例。 )
1.单例模式类Singleton
package com.xkzhangsan.singleton; public class Singleton { private static final Singleton singleton = new Singleton(); // 限制产生多个对象 private Singleton() { } // 通过该方法获得实例对象 public static Singleton getSingleton() { return singleton; } // 类中其他方法,尽量是static public static void doSomething() { System.out.println("Singleton.doSomething..."); } }
2.测试类
package com.xkzhangsan.singleton; public class Client { public static void main(String[] args) { for (int i = 0; i < 3; i++) { Singleton singleton = Singleton.getSingleton(); singleton.doSomething(); } } }
3.使用注意
(1)优点
a.由于单例模式在内存中只有一个实例, 减少了内存开支 ,减少了系统的性能开销
b.单例模式可以在系统设置全局的访问点, 优化和共享资源访问
(2)缺点
a.单例模式一般没有接口, 扩展很困难, 若要扩展, 除了修改代码基本上没有第二种途径可以实现
(3)使用场景:在一个系统中, 要求一个类有且仅有一个对象, 如果出现多个对象就会出现“不良反
应”, 可以采用单例模式 ,如下:
a.要求生成唯一序列号的环境
b.在整个项目中需要一个共享访问点或共享数据
c.创建一个对象需要消耗的资源过多
d.需要定义大量的静态常量和静态方法(如工具类) 的环境, 可以采用单例模式
参考:设计模式之禅
GitHub地址:https://github.com/xkzhangsan/java-designpattern-practice