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

    package dmode.singleton;
    
    import java.util.Random;
    
    /**
     * 类描述:  单例模式
     * 单例定义:ensure a class has only one instence,and provide a global point of access to it
     * 确保一个类只有一个实例,并且提供一个全局访问点来访问这个实例 
     * 其他内容:static 关键字修饰的内容,存储在静态代码区域,
     * java 的存储内容包括:堆、栈(常量、对象引用)、静态存储区
     * @version 1.0  CreateDate: 2015-2-12
     *
     * @history:
     * @updateDate            @updatePerson        @declare
     * 
     */
    public class SinglClass {
        private static String singlParam;
        
        //懒汉式声明,在使用对象的时候再获取
        //线程不安全:在getInstenc() 方法中,如果并发,可能获取获取多个实例
        //解决方法:可以用 synchronized 修饰方法,也可以在方法体内用 synchronized{}代码块
        private static SinglClass singlClazz;
        
        //饿汉式声明,在类的初始化时就获取实例,final 的作用是让这个实例不在变化
        //线程安全
        private static final SinglClass singlClazz2 = new SinglClass("饿汉式");
        
        private static int time = 1;
        
        private SinglClass(String param){
            System.out.println("开始构造对象" + new Random().nextInt(100) + param);
        }
        
        //懒汉式声明
        //synchronized 保证线程安全
        public static synchronized SinglClass getInstence(){
            if(singlClazz == null){
                singlParam = "懒汉式";
                singlClazz = new SinglClass("懒汉式");
            }
            return singlClazz;
        }
        
        //饿汉式声明
        public static SinglClass getInstence2(){
            return singlClazz2;
        }
        
        public void sayHello(){
            if(this == singlClazz){
                System.out.println(singlParam + "say Hello " +  time++  );
            }else{
                System.out.println("饿汉式" + "say Hello " +  time++ );
            }
            
        }
        
    }
  • 相关阅读:
    Python 选择排序
    ORACLE和MYSQL的简单区别
    测试基础
    mongoDB新增数据库
    支付-测试点
    安装 selenium 对于python而言属于一个第三方的模块
    使用Fiddler抓包抓取不了数据包的问题
    软件测试技术之可用性测试之WhatsApp Web
    集成腾讯Bugly日志- Android(1)
    C++中的各种可调用对象
  • 原文地址:https://www.cnblogs.com/leonkobe/p/4287770.html
Copyright © 2011-2022 走看看