zoukankan      html  css  js  c++  java
  • 设计模式单例模式(singleton)

    设计模式-单例模式(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)模式在一起使用,因为系统中工厂对象一般来说只要一个。





  • 相关阅读:
    PCL利用RANSAC自行拟合分割平面
    HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT
    BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP
    BZOJ 1500 Splay 全操作
    Manacher
    POJ 2155 2维线段树 || 2维BIT
    BZOJ 1015 并查集+离线倒序
    NOI Linux JAVA
    UVA 10407 差分思想的运用
    BZOJ 1969 树链剖分+Tarjan缩点
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2995328.html
Copyright © 2011-2022 走看看