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

    1、简介

      作为对象的创建模式,单例模式确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类

    2、单例模式有以下三个特点

      2.1、单例类只能有一个实例

      2.2、单例类必须自己创建自己的唯一实例

      2.3、单例类必须向其它对象提供这一实例

    3.饿汉式单例模式

    package Singleton;
    /**
     * ********************************************************  
    * @ClassName: EagerSingleton 
    * @Description: 饿汉式单例模式 
    *  
    **********************************************************
     */
    public class EagerSingleton {
        private static final EagerSingleton m_instance = new EagerSingleton();
        
        //私有构造器
        private EagerSingleton(){}
        
        public static EagerSingleton getInstance(){
            return m_instance;
        }
    }

      可以看出,当这个类被加载时,m_instance 会被初始化。此时类的私有构造器会被调用,这样单例类的唯一实例就被创建了

      单例类的一大特点是类的构造器是私有的,从而避免了外界利用构造器直接创建出其它的实例,并且,由于构造器是私有,此类不能被继承

    4、懒汉式单例模式

    package Singleton;
    /**
     * ********************************************************  
    * @ClassName: LazySingleton 
    * @Description: 懒汉式单例模式
    *  
    **********************************************************
     */
    public class LazySingleton {
        private static LazySingleton m_instance = null;
        
        //私有构造器  保证外界无法直接实例化
        private LazySingleton(){}
        
         public synchronized static LazySingleton getInstance(){
            if(null == m_instance){
                m_instance= new LazySingleton();
            }
             return m_instance;
        }
    }

     

  • 相关阅读:
    Unity3D 开发之shader教程(浅谈光照之漫反射diffuse)
    游戏引擎浅析
    Unity3D 中的三个Update()方法
    Unity 游戏存档 PlayerPrefs类的用法
    unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)
    Unity 3D制作2D游戏的几种方法
    Unity3D 常用插件
    Unity3D协同程序(Coroutine)
    Unity中 动态加载 Resources.Load()和Asset Bundle 的区别
    Unity3D 游戏开发之内存优化
  • 原文地址:https://www.cnblogs.com/shun-gege/p/7459231.html
Copyright © 2011-2022 走看看