设计模式-单例模式(singleton)
Singleton模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。且不说公司企业在招聘的时候为了考察员工对设计的了解和把握,考的最多的就是Singleton模式。
模式结构图:
Singleton模式典型的结构图为:
在Singleton模式的结构图中可以看到,我们通过维护一个static的成员变量来记录这
个唯一的对象实例。通过提供一个staitc的接口instance来获得这个唯一的实例。
实现:
SingletonTest: 实现3实现单例
package com.designpatten.singleton; public class SingletonTest { //唯一实例 private static SingletonTest mSingletonTest ; //单例模式的构造函数要私有化,或者用protected修饰。 private SingletonTest(){} ; //这个方法要是静态的。 public static SingletonTest newInstance(){ mSingletonTest = mSingletonTest == null ? new SingletonTest(): mSingletonTest ; return mSingletonTest ; } }Test: 测试单例模式创建的对象是同一个对象。
package com.designpatten.singleton; public class Test { public static void main(String[] args) { SingletonTest st1 = SingletonTest.newInstance() ; SingletonTest st2 = SingletonTest.newInstance() ; System.out.println(st1 == st2); //结果:true 表明两个对象其实是用一个对象 } }
Singleton模式在开发中经常用到,且不说我们开发过程中一些变量必须是唯一的,比如说打印机的实例等等。
Singleton模式经常和Factory(AbstractFactory)模式在一起使用,因为系统中工厂对象一般来说只要一个。