[置顶]单例设计模式 (代码实现)
2016-07-27 22:36
519 查看
---单例设计模式之饿汉式---
创建SingleInstance类
1 /** 2 * 单例设计模式之饿汉式 3 */ 4 public class SingleInstance { 5 /** 6 * 私有化构造方法 7 */ 8 private SingleInstance() {} 9 /** 10 * 成员变量 11 */ 12 private static SingleInstance instance = new SingleInstance() ; 13 /** 14 * 提供一个静态的成员方法,返回该对象 15 */ 16 public static SingleInstance getInstance() { 17 return instance ; 18 } 19 }
创建测试类SingleInstanceDemo
1 /** 2 * 单例设计模式的思想: 保证该类在内存中只有一个实例(对象) 3 * 优点节省内存,提高内存利用率 4 */ 5 public class SingleInstanceDemo { 6 7 public static void main(String[] args) { 8 9 // 调用方法获取对象 10 SingleInstance instance1 = SingleInstance.getInstance() ; 11 SingleInstance instance2 = SingleInstance.getInstance() ; 12 13 // 输出 14 System.out.println(instance1 == instance2); 15 } 16 }
-------------------------------------------------------------------------------------------------------------
---单例设计模式之懒汉式---
创建SingleInstance2类
1 /** 2 * 单例设计模式之懒汉式 3 * 4 * 面试中写那种单例设计模式呢? 5 * 面试中写懒汉式: 因为懒汉式体现了两种思想, 第一种线程问题 , 第二种 延迟加载 6 * 7 * 开发中写饿汉式 8 */ 9 public class SingleInstance2 { 10 /** 11 * 私有化构造方法 12 */ 13 private SingleInstance2() {} 14 /** 15 * 提供一个成员变量 16 */ 17 private static SingleInstance2 instance = null ; 18 /** 19 * 提供一个静态的成员方法 20 */ 21 public static synchronized SingleInstance2 getInstance() { 22 23 if(instance == null){ 24 instance = new SingleInstance2() ; 25 } 26 return instance ; 27 } 28 }
创建测试类SingleInstanceDemo2
1 public class SingleInstance2Demo { 2 3 public static void main(String[] args) { 4 5 // 获取对象 6 SingleInstance2 instance1 = SingleInstance2.getInstance() ; 7 SingleInstance2 instance2 = SingleInstance2.getInstance() ; 8 9 // 比较 10 System.out.println(instance1 == instance2); 11 12 } 13 14 }
相关文章推荐
- [置顶]Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
- 反射--(代码实现)
- java 实现(代码) -- 水仙花数 + 杨辉三角形
- 演示 pull解析的基本步骤(代码演示)
- Java Collections与Arrays的浅解
- Java 聊天室
- java this 关键字练习
- Java-基础-多线程notify()和notifyAll()
- PHP面向对象高级特性
- python
- [转]Python深复制浅复制or深拷贝浅拷贝
- 2016 多校联训 第三场Teacher Bo hdoj5762
- Java面向对象二
- Retrofit2使用CallAdapterFactory的错误处理
- 机器学习第2周编程作业
- leetcode题解日练--2016.7.27
- Java中的基本数据类型
- RxJava 之 Hello World
- java基础--06对象内存图
- Python写xml文件