单例模式--导读
在我们编程过程中我们会经常碰到一些对象,他们要频繁的使用,而我们为了方便于是便频繁的对这个对像进行新建,当然这对我们编程的确是很方便
但是,这同时会造成很大的资源浪费。所以我们想出了一个限制资源的方法,那就是只能新建一次,而不允许第二次新建,但是我们又需全局对该类的引用
所以我们干脆使得该类不需要在其他类中进行实例化,可以对该类进行直接引用,这便是单例模式。
单例模式--定义
从上面的导读我们可以理解到,单例模式的特点为:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式--模型
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。
单例模式--代码实现
对于单例模式我们想的方法必然是私有化构造方法,同时使用一个静态变量,让其他类无法新建该对象,这样便可以确保该对象只能产生一个
当要引用时先判断静态变量中是否为空,为空则新建,不为空则不新建,私有化构造方法可以确保其他类不能对该类进行实例化
下面进行代码展示:
Singleton.java单例的类
package Singleton; public class Singleton { //定义静态变量,用于判断是否已经被实例化 private static Singleton uniqueSingleton; //私有化构造器,防止其他类进行实例化 private Singleton() { } //返回所需的对象 public static Singleton getInstance() { if(uniqueSingleton==null) uniqueSingleton=new Singleton(); return uniqueSingleton; } public void showMessage() { System.out.println("hello world"); } }
client.java客户端的使用
package Singleton; public class Client { public static void main(String[] args) { // TODO Auto-generated method stub Singleton single=Singleton.getInstance(); single.showMessage(); } }
但是这样可能出现一个问题当我们另外开个线程的时候就会发现,这样的单例根本没有用
原文:https://www.cnblogs.com/sank/p/10673138.html