单例模式

来源:互联网 发布:cctv5直播软件 编辑:程序博客网 时间:2024/06/08 10:26

一 模式定义
1 某个类只能有一个实例。
2 该类必须自行创建这个实例。
3 该类必须自行向整个系统提供这个实例。

 

二单例模式举例
1 模式分析


 
2 使用同步线程安全创建单例对象

package com.demo.singleton;public class Singleton {// 类共享实例对象 实例化private static Singleton singleton = null;// 私有构造方法private Singleton() {System.out.println("-- this is Singleton!!!");}// 获得单例方法public synchronized static Singleton getInstance() {// 直接返回共享对象if(singleton == null){singleton = new Singleton();}return singleton;}}

 3 创建一个类全局对象实例作为单例对象

package com.demo.singleton;/** * 单例设计模式 *  * @author *  */public class Singleton {// 类共享实例对象 实例化private static Singleton singleton = new Singleton();// 私有构造方法private Singleton() {System.out.println("-- this is Singleton!!!");}// 获得单例方法public static Singleton getInstance() {// 直接返回共享对象return singleton;}}

 4 单例客户端代码

package com.demo;import com.demo.singleton.Singleton;/** * 客户端应用程序 *  * @author *  */public class Client {/** * @param args */public static void main(String[] args) {// 首先 检验是否能用new操作符创建Singleton对象实例Singleton singleton = Singleton.getInstance();// 在此获得Singleton对象实例Singleton singleton2 = Singleton.getInstance();// 比较两个对象是否是同一个对象实例if (singleton == singleton2) {System.out.println("--这是同一个对象!");} else {System.out.println("--这是不同的对象!");}}}

 运行结果
-- this is Singleton!!!
--这是同一个对象!


三设计模式
1 确保某个类只有一个实例。
2 自行实例化并向整个系统提供这个实例。