zoukankan      html  css  js  c++  java
  • Singelton单例模式

    单例,相当于一个全局变量,在整个应用程序中保证只有一个类的实例存在。

      

    线程池、数据库连接池、缓存、日志等对象常被设计成单例

    实例:

    1.懒汉式单例

    /**
     * 懒汉式单例Singelton:是一种创建性模式,在运行期调用对外开发的方法getInstance时创建单例对象
     *         确保每次只创建一个实例,并提供一个全局访问点
     *         
     * 缺陷:不满足线程安全的要求,在并发环境下很可能出现多个Singleton实例(不推荐使用)
     * @author 魅力_小生
     */
    public class SingeltonTest01 {
        
        /**
         * 私有的静态属性(自身)
         */
        private static SingeltonTest01 instance;
        
        /**
         * 私有构造,防止外部实例化
         * 
         * 但是:通过Java反射机制是能够实例化构造方法为private的类的,那基本上会使所有的Java单例实现失效
         */
        private SingeltonTest01(){
            
        }
        
        /**
         * 单例获取方法
         * 外部只能通过该方法获取类的实例
         * @return instance实例对象
         */
        public static SingeltonTest01 getInstance(){
            if(instance == null){
                instance = new SingeltonTest01();
            }
            return instance;
        }
    }

    2.饿汉式单例

    /**
     * 饿汉式单例
     * 
     * 饿汉式单例类.在编译期类初始化时,已经自行实例化,从始至终只有一个对象
     * 线程安全,推荐使用
     * @author 魅力_小生
     */
    public class SingeltonTest02 {
        
        /**
         * 创建私有静态的实例
         */
        private static SingeltonTest02 instance = new SingeltonTest02();
        
        /**
         * 私有构造,防止外部实例化
         */
        private SingeltonTest02(){
            
        }
        
        /**
         * 静态工厂方法,返回实例
         * @return
         */
        public static SingeltonTest02 getInstance(){
            return instance;
        }
    }
    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    Date
    Math
    封装实参的对象 arguments
    函数方法call()和apply()
    执行上下文栈
    原型(prototype属性)和原型链。 重要!!!
    android studio for Mac快捷键大全
    软件的横竖屏切换
    Android XML文件中@id和@+id的区别
    java中的Iterator<E>
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/5222112.html
Copyright © 2011-2022 走看看