首页 / 设计模式 / 跟着实例学习设计模式-单例模式
跟着实例学习设计模式-单例模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了跟着实例学习设计模式-单例模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1945字,纯文字阅读大概需要3分钟。
内容图文
单例模式属于创建型设计模式。
单例模式的设计意图是:保证一个类只有一个实例,并提供一个访问它的全局访问点。
单例模式根据单例,一种是懒汉式单例。饿汉式单例在单例类被加载时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才会实例化对象。
代码如下:
饿汉式:
package com.home.singleton; /** * 饿汉式单例 * * @author gaoxu 实践出真知! */ public class SingletonB { static SingletonB singletonB = new SingletonB(); private SingletonB() { }; public static SingletonB getInstance() { return singletonB; } }
懒汉式:
package com.home.singleton; /** * 懒汉式单例 * * @author gaoxu 实践出真知! */ public class SingletonA { static SingletonA singleton = null; private SingletonA() { }; public static synchronized SingletonA getInstance() { if (singleton == null) { return new SingletonA(); } return singleton; } }
单例模式是设计模式中最简单的,它有以下几个要素:
- 私有的构造方法
- 指向自己实例的私有静态引用
- 以自己实例为返回值的静态的公有的方法
我们看到了如何构建一个单例类的方式了,那么在实际应用中,单单写这个一个单例类到底有什么用呢?让我们来看一个实例。
我们知道spring的IoC有两种加载方式,一种是BeanFactory一种是AppicationContext,那么我们使用单例该怎么实现IoC容器的加载呢?
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author gaoxu 实践出真知! */ public class SpringTools { protected static Logger log = LoggerFactory.getLogger(SpringTools.class); private ApplicationContext context; /** * 只有被调用时才会加载 * * */ private static class SingletionHolder { private static SpringTools instance = new SpringTools(); } private SpringTools() { log.info("init spring context"); context = new ClassPathXmlApplicationContext("application.xml"); } public static ApplicationContext getContext() { return SingletionHolder.instance.context; } }
以上代码是通过AppictionContext加载spring IoC容器的单例类,我们可以在应用程序的主启动类中做如下加载。
ApplicationContext context = SpringTools.getContext();
这样我们就可以通过接口提供的方法访问容器中的类。
单例模式的优点:
- 在内存中只有一个对象,节省内存空间。
- 避免频繁的创建销毁对象,可以提高性能。
- 避免对共享资源的多重占用。
- 可以全局访问。
通过刚才的实例,我们也可以真实的体验到单例模式的这些优点,spring IoC容器的访问在应用中相当频繁,所以单例模式加载在适合不过了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/andy_gx/article/details/46767757
内容总结
以上是互联网集市为您收集整理的跟着实例学习设计模式-单例模式全部内容,希望文章能够帮你解决跟着实例学习设计模式-单例模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。