关于JAVA中的singleton模式
来源:互联网 发布:中文域名好吗 编辑:程序博客网 时间:2024/04/24 02:10
百度知道上的,非笼统复制:
package test;public class Singleton { private Singleton s; private Singleton() { } public static Singleton getSingleton() { if(s==null)s=new Singleton(); return s; } }这就是一个单例模式,我想应该不用注释了,原理就是这个类的构造方法private了,所有在外边不能调用,也就不能new Singleton();得到实例,那么想得到实例就得调用它的静态方法getSigleton();即Singleton.getSigleton();就会返回一个Singleton的实例,注意此方法中的语句,即如果你是第一次调用这个方法那么它会给你new一个实例,以后再调用得到的都是这个实例,也就是说从始至终就只有一个Singleton的实例,这就是单例模式。
单例模式,顾名思义就是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式又分为饿汉式单例模式,懒汉式模式,登记式单例模式。代码如下:饿汉式单例模式:public class EagerSingleton {private static final EagerSingleton m_instance = new EagerSingleton();private EagerSingleton() {}public static EagerSingleton getResource() {return m_instance;}}
懒汉式模式:public class LazySingleton {private static final LazySingleton m_instance = null;private LazySingleton() {}synchronized public static LazySingleton getInstance() {if (m_instance == null) {return new LazySingleton();}return m_instance;}}登记式单例模式:public class RegSingleton {private static Map<Object, Object> m_registry = new HashMap<Object, Object>();static {RegSingleton m_instance = new RegSingleton();m_registry.put(m_instance.getClass().getName(), m_instance);}protected RegSingleton() {}public static RegSingleton getInstance(String name) {if (name == null) {name = "RegSingleton";}if (m_registry.get(name) == null) {try {m_registry.put(name, Class.forName(name).newInstance());} catch (Exception e) {System.out.println("Error happened.");}}return (RegSingleton) m_registry.get(name);}}
具体实例:
public class EagerInitialization { private static Resource resource = new Resource(); public static Resource getResource() { return resource; } static class Resource { } }
//测试类class SingletonTest { public static void main(String[] args) { Resource r1 = EagerInitialization .getResource(); Resource r2 = EagerInitialization .getResource(); if (r1==r2) System.out.println("r1 is the same instance with r2"); else System.out.println("r1 is not the same instance with r2"); }}
如果想学习设计模式,推荐本书:阎宏的《java与模式》
参考网址:http://zhidao.baidu.com/question/126080149.html
http://wuzeitianxia.i.sohu.com/blog/view/110329921.htm
- 关于JAVA中的singleton模式
- 关于JAVA中的singleton模式
- 关于JAVA设计模式中的Singleton
- JAVA中的Singleton模式
- 关于java中的单例模式(singleton)
- 关于Singleton模式中的Double Check机制
- JAVA中的单例模式(Singleton)
- java中的单立模式---singleton
- Singleton 模式在 Java 中的应用
- java中的Singleton(单例)模式
- java中的Singleton单例模式
- Java中的单例设计模式Singleton
- 关于Singleton模式
- 关于Java的singleton模式的介绍,比较有用
- java Singleton模式
- java Singleton模式
- Java模式之Singleton
- java Singleton模式
- jquery autocomplete 多字段
- 您在 /var/mail/root 中有新邮件
- iPhone开发【二十三】常用IOS开源组件【第1篇】
- U-Boot的配置、编译、连接过程
- java 静态内部类
- 关于JAVA中的singleton模式
- oracle 12541错误解决办法
- BIT1055The Euler function
- 【Android开发学习06】Android中的文件I/O操作
- ZTE将在MWC大会上展示Firefox操作系统手机
- php 登录之后,返回会员上一次访问的路径网址
- iPhone开发【二十四】数据持久化总结之第4篇—sqlite3数据库
- errors running builder 'Android Pre Compiler' on project'项目名称'
- GDI坐标系统(下)