一直想总结一下设计模式,因为设计模式是个抽象的东西,非常容易遗忘,只要不断的总结才能深入了解它们,下面我就从简单的单例模式开始总结吧!
在一些项目中,我经常看到一些人乱用单例模式,或者用的不好。单例模式有以下特点:
1,单例类有且只有一个自身向其他对象提供的实例。
2,单例对象必须自己创建这个实例。
单例类一般有两种写法:
1,饿汉式:
package singleton;
public class Singleton {
/**
* 饿汉式获取对象实例
*/
private static Singleton instance = new Singleton();
/**
* 私有构造子
*/
private Singleton(){
}
/**
* 外部对象唯一获取示例的方法
* @return
*/
public static Singleton getInstance(){
return instance;
}
/**
* @param args
*/
public static void main(String[] args) {
Singleton instance = Singleton.getInstance();
}
}
二:懒汉式
package singleton;
public class LazySingleton {
private static LazySingleton instance = null;
/**
* 私有构造子
*/
private LazySingleton(){
}
/**
* 外部对象唯一获取示例的方法
* 此处用synchronized来防止多线程环境下对象被多次实例化的情况
* @return
*/
public synchronized static LazySingleton getInstance(){
if(instance==null)
instance = new LazySingleton();
return instance;
}
/**
* @param args
*/
public static void main(String[] args) {
LazySingleton instance = LazySingleton.getInstance();
}
}
总结:饿汉和懒汉各有优点。饿汉式在自己被加载时就已经实例化了,而懒汉式则在第一次调用它的实例化方法时才会实例化。饿汉式是以空间换时间,懒汉式是以时间换空间。编程时一般我喜欢用饿汉式,不光是因为饿汉式简单,还由于饿汉更适合java。
分享到:
相关推荐
设计模式之单例模式 设计模式之单例模式 设计模式之单例模式
单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 比如在某个服务器程序中,该服务器的配置信息存放...
设计模式C++学习之单例模式(Singleton)
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
设计模式 中的 单例模式和观察者模式;以简单实例说明单例模式和观察者模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在...
细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分
C++单例设计模式,单例模式 C++单例设计模式,单例模式
java设计模式之单例模式
设计模式之单例模式 懒汉式,饿汉式,同步枷锁
设计模式--单例模式java例子
java设计模式中的单例模式,而单例模式又分为饿汉模式和懒汉模式
目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...
单例模式主要有懒汉式和饿汉式两种实现,饿汉式不会有线程安全的问题,但是提前构造对象占用了一定的资源,如果对内存要求较低的场景可以使用饿汉式实现;懒汉式应使用DCL机制来避免多线程竞争资源的问题,并且懒汉...
是http://blog.csdn.net/lxq_xsyu/article/category/1544127博客中java设计模式的源代码。下载前请先看《设计模式——单例模式》一文。
李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。
本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: 良好的设计模式可以显著提高代码的可读性,降低复杂度和维护成本。笔者打算通过几篇文章通俗地讲一讲常见的或者实用的设计...
为了帮助大家快速和较好地理解JavaScript设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。