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