什么是单例模式

 

1.    什么是单例模式?

在Java应用程序中,随着应用程序的运行会创建出很多对象。但有时候我们希望在创建某类对象时,无论创建多少次该类对象只有一份在内存中。这就是单例模式。如果我们要实现单例模式首先要保证构造函数私有化,即不允许用户随意调用我本类的构造函数,因为只要通过new操作创建对象,必定要在堆中开辟空间,这样就无法实现单例了。

 

2.    例模式的实现

为了大家能很简单的理解单例模式,我们来实现一个案例:

案例描述:

      街头 银行取款机一次只可以一个人,用一张卡站它前面提款.
 
取款机的类,里面包含插入银行卡和取出银行卡两个方法。
package com.singleton;
     
/**银行提款机ATM*/
public class ATMCash {
    private static ATMCash instance;
    private String creditCard ;
     
    private ATMCash(){    
    }
     
    //保证只有一个人一张卡在使用提款机
    public static synchronized ATMCash getInstance(){
        if(instance ==null){
            instance = new ATMCash();
        }
        return instance ;
    }
     
    public String getCard(){
        return creditCard ;
    }
     
    //插入ATM磁卡
    public void insertCard(String card){
        creditCard = card;
} //取出ATM磁卡 public void getOutCard(){ creditCard = null ; } } 取款操作类,这个类是测试类 package com.singleton; /**取款操作*/ public class SingletonTest { public static void main(String args[]){ /**Jack取款*/ ATMCash jack = ATMCash. getInstance(); jack.insertCard( "招商银行信用卡" ); System. out.println("Jack取钱用的银行卡是:" +jack.getCard()); /**Rose取款*/ ATMCash rose = ATMCash. getInstance(); rose.insertCard( "中国人民银行信用卡" ); System. out.println("Rose取钱用的银行卡是:" + rose.getCard()); } }
运行结果:
Jack的银行卡:招商银行信用卡
Rose的银行卡:中国人民银行信用卡
 
 
以下是单例模式的一般模型:
public class Singleton {
    private static Singleton single = null;
    private Singleton(){}
     
    public static Singleton getSingleton(){
        if(single ==null){
            single = new Singleton();
        }
     
    return single ;
    }
}

 

本文学习兵转载自https://blog.csdn.net/very9527/article/details/10211881

posted @ 2018-10-17 17:42  筱筱的春天  阅读(896)  评论(0编辑  收藏  举报