中山本地网站建设,网页制作模板关于我们,宝石汇网站,网站建设 论文写在前面
本文看下单例设计模式。
写在前面
本文一起看一种创建型设计模式#xff0c;单例设计模式。
1#xff1a;介绍
1.1#xff1a;什么时候单例设计模式
当程序只需要一个对象时使用。
1.2#xff1a;UML类图
原型设计模式#xff0c;包含如下元素#xff1…写在前面
本文看下单例设计模式。
写在前面
本文一起看一种创建型设计模式单例设计模式。
1介绍
1.1什么时候单例设计模式
当程序只需要一个对象时使用。
1.2UML类图
原型设计模式包含如下元素
1单例类提供一个方法获取自身唯一的实例对象。2实例
源码 。
2.1场景
2.2程序
饿汉式
//饿汉式单例
public class Hungry {//构造器私有别人就无法去new这个对象保证内存中只有一个对象private Hungry(){}private final static Hungry HUNGRY new Hungry();public static Hungry getInstance(){return HUNGRY;}
}可以通过反射创建新实例非绝对安全。 懒汉式非线程安全
//懒汉式单例
public class LazyMan {private LazyMan() {System.out.println(Thread.currentThread().getName() ok!);}private static LazyMan lazyMan;public static LazyMan getInstance() {if (lazyMan null) {lazyMan new LazyMan();}return lazyMan;}
}可以通过反射创建新实例非绝对安全。 DCL懒汉式线程安全
public class DclLazy {private static DclLazy instance;private static final Object mutexLock new Object();// 私有化构造函数防止外部创建private DclLazy() {}public static DclLazy getInstance() {// 第一次检查实例是否创建if (instance null) {// 获取锁synchronized (mutexLock) {// 第二次检查实例是否创建if (instance null) {System.out.println(实例初始化开始了);// 创建实例instance new DclLazy();System.out.println(实例初始化结束了);}}}return instance;}
}可以通过反射创建新实例非绝对安全。 枚举
public enum EnumCls {zhangsan(张三女);private String name;EnumCls(String name) {this.name name;}
}无法通过反射创建新实例相对安全。 写在后面
参考文章列表
单例模式饿汉式DCL懒汉式 。