设计模式之Singleton(单态)
单态定义:
Singleton 模式主要作用是保证在Java应用程序中,一个类Class 只有一个实例存在。
在很多操作中,比如建立目录 数据库链接都需要这样的单线程操作。
模式如下:
第一种模式
package com.zuoyan.Singleton; public class Singleton { private Singleton(){} //在自己内部定义一个自己的实例 //注意这个是private 只供内部调用 private static Singleton instance =new Singleton(); //这里提供了一个供外部访问本Class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } }
第二种模式
package com.zuoyan.Singleton; public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } }
使用 Singleton.getInstance()可以访问单态类。
上面第二中形式是 lazy initialization,也就是说第一次调用时初始 Singleton,
以后就不用再生成了。
注意到 lazy initialization 形式中的 synchronized,这个 synchronized 很重
要,如果没有 synchronized,那么使用 getInstance()是有可能得到多个 Singleton