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

    package c;
    
        /*
        单例设计模式:保证一个类在内存中只有一个对象。
    
        模式:模式就是解决 一类 问题的固定步骤 。
    
        模式的概念最早起源于建筑行业....
    
        建房子的步骤都是一样子:
            
            打地基-----> 浇柱子------->盖楼面--------->砌墙--------->封顶---->装修-----入住
    
        软件行业中23种设计模式:
    
            单例设计模式
            模板设计模式
            装饰者设计模式
            观察者设计模式
            工厂设计模式
    
        单例设计模式的步骤:    
    
    
        饿汉单例设计模式
            1. 私有化构造函数。
            2. 声明本类的引用类型变量,并且使用该变量指向本类对象。
            3. 提供一个公共静态的方法获取本类的对象。
    
        懒汉单例设计模式:
            1. 私有化构造函数。
            2. 声明本类的引用类型变量,但是不要创建对象,
            3. 提供公共静态 的方法获取本类 的对象,获取之前先判断是否已经创建了本类 对象
            ,如果已经创建了,那么直接返回对象即可,如果还没有创建,那么先创建本类的对象,
            然后再返回。
    
    
        推荐使用: 饿汉单例设计模式。  因为懒汉单例设计模式会存在线程安全问题,目前还不能保证一类在内存中只有一个对象。
    
    
        */
    
    
        //饿汉单例设计模式 ----> 保证Single在在内存中只有一个对象。
        class Single{
    
            //声明本类的引用类型变量,并且使用该变量指向本类对象
            private static    Single s = new Single();
    
            //私有化构造函数
            private Single(){}
    
            //提供一个公共静态的方法获取本类的对象
            public    static  Single getInstance(){
                return s;
            }
        }
    
    //    class Test{
    //    public static Test t=new Test();
    //    private Test{}
    //    public static Test getInstance(){
    //    return t;
    //    }
    //    }
    //    class Test{
    //    public static Test t;
    //    private Test{}
    //    public static Test getInstance(){
    //    if(t==null){
    //    t=new Test();
    //    }
    //    return t;
    //    }
    //    }
    
        //懒汉单例设计模式 ----> 保证Single在在内存中只有一个对象。
    
        class Single2{
            
            //声明本类的引用类型变量,不创建本类的对象
            private static Single2 s;
    
            //私有化了构造函数
            private Single2(){}
    
            //
            public static Single2 getInstance(){
                if(s==null){
                    s = new Single2();
                }
                return s;
            }
        }
    
    
    
    
        public class danli {
            public static void main(String[] args) 
            {
                Single2 s1 = Single2.getInstance();
                Single2 s2 = Single2.getInstance();
                System.out.println("是同一个对象吗?"+ (s1==s2));
                
                Single s3 = Single.getInstance();
                Single s4 = Single.getInstance();
                System.out.println("是同一个对象吗?"+ (s3==s4));
    
            }
        }
  • 相关阅读:
    CentOS6 samba配置实例及详解
    itools airplay没出现该图标的解决方法
    修改注册表让您的Windows7系统彻底禁用U盘
    iphone 4S 下拉通知背景切换的方法
    JAVA EE Apache Zookeeper / Google Chubby
    db Oracle OLTP OLAP / apache kylin / druid
    appServer WAS / WebSphere / javacore.txt 、heapdump.phd、core.dmp、Snap.trc
    JAVA EE Code Quality / Sonar / findbugs / checkstyle / cobertura(coverage) / PMD
    OS + Linux CoreOS / Ubuntu 16.04 LTS / docker / openSTF
    App Store Review Guidelines 送審前十項常犯必檢查項目表
  • 原文地址:https://www.cnblogs.com/huodaihao/p/9156930.html
Copyright © 2011-2022 走看看