单例模式
单例模式是结构最简单的设计模式,在它的核心结构中只包含一个被称为单例类的特殊类。单例模式是一种创建型模式。
通过单例类可以保证系统中一个类只有一个实例而且该实例易于被外界访问(通常的实现是私有实例,私有构造,公开访问方法)。如果希望在系统中某个类的对象只能存在一个,那么单例模式就是最好的解决方案。
单例模式的定义
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类,它提供全局访问的方法。其要点有3个:
- 一个类只能有一个实例;
- 必须自行创建这个实例;
- 必须自行向整个系统提供这个实例。
Java中单例的体现
Java 中的 java.lang.Runtime
就是一个单例类。
其中的部分代码如下:
public class Runtime {
/**
* 该类自己去实例化这个对象
*/
private static Runtime currentRuntime = new Runtime();
/**
* 对外部提供获取唯一实例的方法
*/
public static Runtime getRuntime() {
return currentRuntime;
}
/**
* 私有构造器:不能在外部 new 这个对象
*/
private Runtime() {}
}
由JDK中这个案例中,可以看到 Java实现单例通常需要满足一下 3 点:
- 单例类的构造函数私有化;
- 提供一个自身的静态私有成员变量;
- 提供一个公有的静态工厂方法;
当然,你要是使用反射去生成实例,那我也没辙。
单例模式-案例
我曾写过的博客:
https://blog.csdn.net/FBB360JAVA/article/details/81407819
附录
本次单例模式没有单独的案例。更多的描述就不多写了。
我从网络上找到有一篇写的还可以的(单例模式的8种写法):https://www.cnblogs.com/zhaoyan001/p/6365064.html
项目地址:https://github.com/fengsoshuai/Design-Pattern
中的singleton。