设计模式-06 单例模式(创建型模式)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式-06 单例模式(创建型模式),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1560字,纯文字阅读大概需要3分钟。
内容图文
一 单例模式
单例模式(Singleton Pattern)提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
主要解决: 一个全局使用的类频繁地创建与销毁。
关键代码: 构造函数是私有的。
使用场景:
Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。
类图 :
二 实现代码
将创建一个 SingleObject 类。SingleObject 类有它的私有构造函数和本身的一个静态实例。SingleObject 类提供了一个静态方法,供外界获取它的静态实例。
1 创建一个 Singleton 类
SingleObject.java
public class SingleObject { // 创建 SingleObject 的一个对象 private static SingleObject instance = new SingleObject(); // 让构造函数为 private,这样该类就不会被实例化private SingleObject() { } // 获取唯一可用的对象publicstatic SingleObject getInstance() { return instance; } publicvoid showMessage() { System.out.println("Hello World! , address is :" + this); } }
2. 运行测试用例
SingletonPatternDemo.java
public class SingletonPatternDemo { public static void main(String[] args) { // 不合法的构造函数 // 编译时错误:构造函数 SingleObject() 是不可见的 // SingleObject object = new SingleObject(); // 获取唯一可用的对象 SingleObject object = SingleObject.getInstance(); // 显示消息object.showMessage(); } }
在实际开发中主要采用 双检锁/双重校验锁(DCL,即 double-checked locking)方式实现单例模式
JDK 版本:JDK1.5 起
是否 Lazy 初始化:是
是否多线程安全:是
实现难度:较复杂
描述:这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
getInstance() 的性能对应用程序很关键。
代码实例:
public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
原文:http://www.cnblogs.com/wangshuo1/p/pattern_6.html
内容总结
以上是互联网集市为您收集整理的设计模式-06 单例模式(创建型模式)全部内容,希望文章能够帮你解决设计模式-06 单例模式(创建型模式)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。