A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jtshawn 于 2014-9-21 12:51 编辑

单例模式定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式应该是23中设计模式中最简单的一种模式了。它有一下几个要素:
1.私有的构造方法。
2.指向自己实例的私有静态引用。
3.以自己实例为返回值的静态的公有的方法。

单例模式根据实例化对象时机的不同分为两种:饿汉式与懒汉式。饿汉式单例在类被加载的时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法时才会实例化对象。

代码如下:

饿汉式
  1. public class Singleton{

  2.     private static Singleton singleton = new Singleton();    //创建本类对象,并私有化。

  3.     private Singleton(){}    //私有化构造函数,让外部不能访问。

  4.     public static Singleton getInstance(){    //对外提供方法获得本类对象。
  5.         
  6.         return singleton;

  7.     }
  8. }
复制代码

懒汉式
  1. public class Singleton{

  2.     private static Singleton singleton;

  3.     private Singleton(){}

  4.     public static Singleton getInstance(){    //当方法被调用时才创建对象。

  5.         if(singleton == null)   
  6.         {
  7.                 singleton = new Singleton();
  8.          }
  9.          return singleton;
  10.     }
  11. }
复制代码


单例模式的优点:
1.在内存中只有一个对象,节省内存空间。
2.避免频繁的创建销毁对象,可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。

应用场景:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但是又经常用到的对象。
3.有状态的工具类对象。
4.频繁访问数据库或文件的对象。
5.以及其他所有要求只有一个对象的场景。


今后会陆续介绍余下的其他模式,和大家一起分享。纯手打,不足之处希望大家多多包涵。







2 个回复

倒序浏览
沙发!!
回复 使用道具 举报
楼主用心了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马