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;
        }
    }
    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    iOS布局进化史
    thinkphp5.0 文章详情页 上一篇 下一篇
    Thinkphp 3.2中文章详情页的上一篇 下一篇文章功能
    WebSocket协议:5分钟从入门到精通
    Nginx实战之反向代理WebSocket的配置实例
    nginx服务器配置/websocket nginx 配置笔记
    使用nginx作为websocket的proxy server
    看完让你彻底搞懂Websocket原理
    本地phpstudy时常停机连接失败,php.ini文件中9000端口问题
    python 发邮件
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/5222112.html
Copyright © 2011-2022 走看看