单例模式是设计模式中比较简单的一种。适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,
它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。当然这只有在你确信你不再需要任何多于一个的实例的情况下。
单例模式的用意在于前一段中所关心的。通过单例模式你可以:
一、确保一个类只有一个实例被建立
二、提供了一个对对象的全局访问指针
三、在不影响单例类的客户端的情况下允许将来有多个实例
经典的单例模式有三种,懒汉式、饿汉式和 登记式。
懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的
时候才会加载。。。。。。
饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例,所以每次用到的之后直接返回就好了。
让我们先看下代码:
懒汉式:
//懒汉式单例模式
public class MySingleton {
//设立静态变量
private static MySingleton mySingleton = null;
private MySingleton(){
//私有化构造函数
System.out.println("-->懒汉式单例模式开始调用构造函数");
}
//开放一个公有方法,判断是否已经存在实例,有返回,没有新建一个在返回
public static MySingleton getInstance(){
System.out.println(