Singleton设计模式
来源:互联网 发布:lol能在mac上玩吗 编辑:程序博客网 时间:2024/05/19 06:37
Singleton的1.0版本
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
if (singleton== null)
{
singleton= new Singleton();
}
return singleton;
}
}
在上面的实例中,几个Singleton的特点:
(1) 私有(private)的构造函数,表明这个类是不可能形成实例了。这主要是怕这个类会有多个实例。
(2) 即然这个类是不可能形成实例,那么,我们需要一个静态的方式让其形成实例:getInstance()。注意这个方法是在new自己,因为其可以访问私有的构造函数,所以他是可以保证实例被创建出来的。
(3) 在getInstance()中,先做判断是否已形成实例,如果已形成则直接返回,否则创建实例。所形成的实 例保存在自己类中的私有成员中。
(4) 我们取实例时,只需要使用Singleton.getInstance()就行了。
Singleton的1.3版本
public class Singleton
{
private static final Singleton singleton = null;
private Singleton()
{
}
public static Singleton getInstance()
{
if(singleton == null)
{
synchronized(Singleton.class)
{
if (singleton== null)
{
singleton= new Singleton();
}
}
}
return singleton;
}
}
在这个版本中:
(1)第一个条件是说,如果实例创建了,那就不需要同步了,直接返回就好了。不然,我们就开始同步线程。
(2)第二个条件是说,如果被同步的线程中,有一个线程创建了对象,那么别的线程就不用再创建了。
java中getIsntance 和 new之区别
(1)new 一定生成一个新的对象 ; getInstance 不一定,可能只是将一个已经存在的引用给你
(2)大部分类(非抽象类/接口/屏蔽了constructor的类)都可以用new,new就是通过constructor生产一个新的实例对象。
getInstance是少部分类才有的一个方法,各自的实现也不同。getInstance在单例模式的类中常见,用来生成唯一的实例,getInstance往往是static的。
- 设计模式-----Singleton模式
- 设计模式-Singleton模式
- 设计模式--Singleton模式
- 设计模式-------Singleton模式
- 设计模式--singleton模式
- 设计模式--Singleton模式
- 【设计模式】--SINGLETON模式
- 探究 Singleton 设计模式
- 探究Singleton设计模式
- 设计模式之singleton
- 设计模式之Singleton
- [设计模式]Singleton
- 设计模式之singleton
- 设计模式之 Singleton
- SharpDevelop设计模式(Singleton)
- 设计模式 Singleton
- 探究Singleton设计模式
- 设计模式之Singleton
- 在oracle下如何创建database link全面总结
- UITableView的多选
- WINDOWS下PCI接口卡WDM驱动程序的DMA编程技术
- SQL*Loader使用指南
- 10年编程无师自通
- Singleton设计模式
- 浅谈 split
- WEB 服务器软件配置和安全配置方案
- UltraEdit
- 网页屏蔽鼠标左右键和键盘按键功能
- SWT Check树选择状态
- Spring学习笔记13
- cocoa 开发总结
- axis发布webservice的服务