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++ );
            }
            
        }
        
    }
  • 相关阅读:
    51keil编译器printf函数
    asp.net里登陆记住密码
    Asp.net GridView分页
    DataTable拆分分页
    ASP.NET MVC 窗体身份验证及角色权限治理示例
    asp.net获取IP地址
    Asp.net Ajax框架教程
    将页面的ViewState放在Session
    20个Jquery表单插件
    前端下载图片的N种方法
  • 原文地址:https://www.cnblogs.com/leonkobe/p/4287770.html
Copyright © 2011-2022 走看看