设计模式之单例(Singleton)模式(一)
一、什么是模式?软件的模式最初起源于建筑学的模式,对于java设计师而且,java源代码是软件的基本组成部分,而这些源代码汇聚的"形",其中有些“形”是反复出现的,构成了对一些典型的问题的典型解决方案,于是就有人把它总结为模式。为了便于相互交流和沟通,人们就给这些形定义了一个可以区别的名字。
二、根据“形”的尺度模式可以分成:“代码模式”,也就是有语句组成的“形”;“设计模式”,也就是有类和对象组成的“形”;“架构模式”,也就是由大尺度的构件组成的“形”。
三、什么是单例模式?单例模式是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
要点:一,该类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
<1>.饿汉式
/**饿汉式*/ public class Singleton { private static final Singleton _instance = new Singleton(); /**私有的默认构造*/ private Singleton(){ } /**静态工厂方法*/ public static Singleton getInstance() { return _instance; } }
当Singleton这个类被加载是,静态变量_instance会被初始化,此时类的私有构造汇被调用。Singleton的唯一实例就被创建了。Java语言中单例类的一个最重要的特点是类的构造是私有的,从而避免了外界利用构造直接创建出任意多的实例。由于构造是私有的,由此此类不能被继承。
<2>.懒汉式
与饿汉式相同的是,类的构造是私有的。与饿汉式不同的是,懒汉式单例模式在第一次被引用时将自己实例化。如果加载器是静态的,那么懒汉式单例被加载是不会将自己实例化。代码如下:/**懒汉式*/ public class Singleton { private static Singleton _instance = null; /**私有的默认构造*/ private Singleton(){} /**静态工厂方法,返回唯一实例*/ public synchronized static Singleton getInstance() { if(_instance==null) { _instance = new Singleton(); } return _instance; } }
相关推荐
姜海强 2020-08-01
conganguo 2020-06-09
虚拟主机 2020-05-01
lweiyue 2020-05-05
TingBen 2020-05-05
Freeman00 2020-05-01
howema 2020-02-21
codercheng 2020-02-15
姜海强 2020-01-14
codercheng 2020-01-01
yw00yw 2019-12-14
姜海强 2019-12-08
swimmer000 2019-11-09
Ingram 2019-11-05
Ingram 2019-11-03
TingBen 2014-10-25
chengrile 2014-05-26
gougouzhang 2019-10-04