定义:
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
用途:
在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。
还有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能synchronize的安全自动加1,如果你要把这个数字永久保存到数据库,你可以在不修改单态接口的情况下方便的做到。
另外方面,Singleton也能够被无状态化。提供工具性质的功能,
Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。
一般Singleton模式通常有几种形式:
1.饿汉式单例类
public class Singleton1
{
private Singleton1()
{
}
private static Singleton1 instance = new Singleton1();
public static Singleton1 getInstance()
{
return instance;
}
}
在这个类被加载时,静态变量instance 会被初始化,此时类的私有构造子会被调用。这时候,单例类的惟一实例就被创建出来了。
2.懒汉式单例类
public class Singleton2
{
private Singleton2()
{
}
private static Singleton2 instance;
public static synchronized Singleton2 getInstance()
{
if(instance == null)
instance = new Singleton2();
return instance;
}
}
lazy initialization,也就是说第一次调用时初始instance ,以后就不用再生成了。
在上面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境。
这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
这两种类型叫法,出自 阎宏博士的《Java与模式》一书的第十五章。
还有一种叫 登记式单例类。
分享到:
相关推荐
设计模式C++学习之单例模式(Singleton)
设计模式总结-模板设计模式,单例模式(singleTon)
本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: 良好的设计模式可以显著提高代码的可读性,降低复杂度和维护成本。笔者打算通过几篇文章通俗地讲一讲常见的或者实用的设计...
本文档,是利用C++来实现设计模式中的,单例模式,里面有内容说明和相关实例代码介绍
C# 23种设计模式之单例模式源码
NULL 博文链接:https://linxingliang.iteye.com/blog/1217811
设计模式系列之01-单例模式(Singleton模式),很好的资源,理论实践结合讲述,逐步更新
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
本文实例讲述了JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能。分享给大家供大家参考,具体如下: 单例模式 单例模式的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中...
单例设计模式Singleton1
php /** * 单例模式 * * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 * */ class Singleton { static private $_instance = null; private function __construct() { } static public function ...
java设计模式,单例模式的不同实现方式
主要介绍了使用设计模式中的Singleton单例模式来开发iOS应用程序的例子,示例代码为传统的Objective-C语言,需要的朋友可以参考下
简单的单例模式举例Singleton 分为恶汉式 懒汉式
2: 缩小命名空间 单例模式是对全局变量的一种改进,它避免了那些存储唯一实例的全局变量污染命名空间. 3: 允许对操作和表示的精华 单例类可以有子类. 而且用这个扩展类的实例来配置一个应用是很容易的,你可以用你所...
单例模式(Singleton Pattern)是 Java 中最常见的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
Singleton是一种创建型设计模式,定义如下: “确保一个类只有一次实例,并为其提供一个全局访问点。” -- E. Gamma 等。 设计模式:可重用的面向对象软件的元素。 韦斯特福德:艾迪生-韦斯利,1995 年。 fw::...
设计模式里面的单例模式程序 package com.rrppff; public class Singleton { private static String name; public static String getName() { return name; } public static void setName(String name) { ...
IOS 单例设计模式实例Demo 单例 设计 模式 IOS Singleton
java 三种设计模式Demo 其中对单例模式做了详细的讲解,及性能和线程安全方面的优化其中Singleton.java为经典单例模式。