本帖最后由 jtshawn 于 2014-9-21 12:51 编辑
单例模式定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式应该是23中设计模式中最简单的一种模式了。它有一下几个要素:
1.私有的构造方法。
2.指向自己实例的私有静态引用。
3.以自己实例为返回值的静态的公有的方法。
单例模式根据实例化对象时机的不同分为两种:饿汉式与懒汉式。饿汉式单例在类被加载的时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法时才会实例化对象。
代码如下:
饿汉式
- public class Singleton{
- private static Singleton singleton = new Singleton(); //创建本类对象,并私有化。
- private Singleton(){} //私有化构造函数,让外部不能访问。
- public static Singleton getInstance(){ //对外提供方法获得本类对象。
-
- return singleton;
- }
- }
复制代码
懒汉式- public class Singleton{
- private static Singleton singleton;
- private Singleton(){}
- public static Singleton getInstance(){ //当方法被调用时才创建对象。
- if(singleton == null)
- {
- singleton = new Singleton();
- }
- return singleton;
- }
- }
复制代码
单例模式的优点:
1.在内存中只有一个对象,节省内存空间。
2.避免频繁的创建销毁对象,可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。
应用场景:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但是又经常用到的对象。
3.有状态的工具类对象。
4.频繁访问数据库或文件的对象。
5.以及其他所有要求只有一个对象的场景。
今后会陆续介绍余下的其他模式,和大家一起分享。纯手打,不足之处希望大家多多包涵。
|
|