【23种设计模式——单例模式】
来源:互联网 发布:软件开发设计方案模板 编辑:程序博客网 时间:2024/05/20 06:08
数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”。
单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”
Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
创建单例:
方法一:(保证不会多个线程同时创建)
1、private类型的无参构造,保证对象不能外部通过new来获得。
2、声明一个静态的此类的引用,不实例化。
3、创建一个public、静态的并且synchronized方法,返回值为此类。
类中如果此类的声明为空,则进行实例化。【供外部调用】
1、private类型的无参构造,保证对象不能外部通过new来获得。
2、声明一个静态的此类的引用,不实例化。
3、创建一个public、静态的并且synchronized方法,返回值为此类。
类中如果此类的声明为空,则进行实例化。【供外部调用】
package com.boco.rnop.vr.atest;public class SingletonTest {// 单例模式方法一// 步骤一:创建私有空参构造,避免外部通过new创建实例private SingletonTest() {}//步骤二:声明一个对象的引用,并不创建实体private static SingletonTest instance = null;//步骤三:创建外部可以调用的方法,使用synchronized可以避免多线程调用发生冲突public static synchronized SingletonTest getInstance() {if (instance == null) {instance = new SingletonTest();}return instance;}}
对结果进行打印:
package com.boco.rnop.vr.atest;import java.lang.reflect.Constructor;public class test {public static void main(String[] args) {//单例模式一SingletonTest c1 = SingletonTest.getInstance();SingletonTest c2 = SingletonTest.getInstance();System.out.println(c1 == c2);System.out.println(c1.equals(c2));}输出的结果都为true,说明指向的地址和实例都是一样的。
方法二:
1、private类型的无参构造。
2、创建一个私有的静态的对象。
3、创建一个public、静态的方法。返回2创建的实例,【供外部调用】。
package com.boco.rnop.vr.atest;public class SingletonTest {// 单例模式方法二// 步骤一:内部创建一个静态的自己的实体private static SingletonTest SingletonTest = new SingletonTest();// 步骤二:创建空参构造private SingletonTest() {}// 步骤三:提供一个供外部访问本类的方法public static SingletonTest instanceSingletonTest() {return SingletonTest;}}
结果打印
package com.boco.rnop.vr.atest;import java.lang.reflect.Constructor;public class test {public static void main(String[] args) {//单例模式二// 因为无参构造是私有的所以不允许使用new来进行实例化// Singleton c1 = new Singleton();Singleton c1 = Singleton.instanceSingleton();Singleton c2 = Singleton.instanceSingleton();System.out.println(c1 == c2);System.out.println(c1.equals(c2));}}输出都是true。
阅读全文
0 0
- 23种设计模式——1单例模式
- 23种设计模式——单例模式
- 23种设计模式之——单例模式
- 精通23种设计模式——单例模式
- 23种设计模式之——单例模式
- 【23种设计模式——单例模式】
- 23种设计模式——单例模式
- 23种设计模式—单例模式
- 设计模式—单例设计模式
- 设计模式之禅—23种设计模式详解_1 单例模式
- 23种设计模式-单例模式
- 23种设计模式~单例模式
- 23种设计模式-单例模式
- 23种设计模式-----单例模式
- 23种设计模式-单例模式
- 23种设计模式-单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 简述JVM垃圾回收机制
- 简单的ffmpeg广播和视频监控
- 安全管理器及策略
- 苹果越狱教程
- Visual Studio 各版本下载
- 【23种设计模式——单例模式】
- 关于cookei的设置和删除
- [日推荐]『讯飞快读』人工智能高效管理时间
- 基于HTML5的WebGL经典3D虚拟机房漫游动画
- Python踩坑之路-datetime模块的timedelta应用
- 【备忘】年薪50万2017年最新北风网Spark2.0从入门到精通教程
- Linux_SS5 安装笔记
- 加解密算法
- 读写锁pthread_rwlock_t的使用