首页 > 其他 > 详细

设计模式之--单例模式

时间:2019-04-08 21:19:05      阅读:136      评论:0      收藏:0      [点我收藏+]

单例模式--导读

  在我们编程过程中我们会经常碰到一些对象,他们要频繁的使用,而我们为了方便于是便频繁的对这个对像进行新建,当然这对我们编程的确是很方便

但是,这同时会造成很大的资源浪费。所以我们想出了一个限制资源的方法,那就是只能新建一次,而不允许第二次新建,但是我们又需全局对该类的引用

所以我们干脆使得该类不需要在其他类中进行实例化,可以对该类进行直接引用,这便是单例模式。

单例模式--定义

  从上面的导读我们可以理解到,单例模式的特点为:              

                        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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!