Java设计模式(3)创建型:单例模式

来源:互联网 发布:数据采集卡工作原理 编辑:程序博客网 时间:2024/05/06 21:25

(一)模式概念

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。

对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。

(二)Demo

Singleton类单例实现:

public class Singleton {/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */private static Singleton instance = null;/* 私有构造方法,防止被实例化 */private Singleton() {}/* 防止多线程同步创建时发生异常  */private static synchronized void syncInit() {if (instance == null) {instance = new Singleton();}}public static Singleton getInstance() {if (instance == null) {syncInit();}return instance;}public void Trace() {System.out.println("这个是单例模式!");}}
执行代码:

Singleton.getInstance().Trace();
执行结果:这个是单例模式!

0 0
原创粉丝点击