设计模式——单例模式

来源:互联网 发布:php开源项目源码 编辑:程序博客网 时间:2024/06/06 04:06
单例模式 
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式的要点有三个:
一是某个类只能有一个实例
二是它必须自行创建这个实例
三是它必须自行向整个系统提供这个实例
从具体实现角度来说,就是以下三点:
一是单例模式的类只提供私有的构造函数
二是类定义中含有一个该类的静态私有对象

三是该类提供了一个静态的共有的函数用于创建或获取它本身的静态私有对象

具体代码实现一般有懒汉式和饿汉式两种

懒汉和饿汉的本质区别,就是实例化对象的时机,即是什么时候将对象创建起来,懒汉式多线程下会出现线程安全问题

懒汉式单例

package com.sun.singleton;public class Singleton {private static Singleton singleton;private Singleton() {}/** * 简单的单列 */public static Singleton getInstance() {if(singleton==null) {singleton = new Singleton();}return singleton;}}
多线程下的懒汉式单例

package com.sun.singleton;public class Singleton {private static Singleton singleton;private static Object lock = new Object();private Singleton() {}/** * 多线程下的单列 */public static Singleton getInstance() {if(singleton==null) {synchronized (lock) {if(singleton==null) {singleton = new Singleton();}}}return singleton;}}
饿汉式

public class Singleton {      private Singleton() {}      private static final Singleton single = new Singleton();      //静态工厂方法       public static Singleton getInstance() {          return single;      }  }  




0 0
原创粉丝点击