zoukankan      html  css  js  c++  java
  • 单利设计模式

    单利设计模式:饿汉模式,懒汉模式

    应用场合:有些对象只需要一个就足够了,如古代的皇帝,老婆

    作用:保证整个应用程序中某个实例有且只有一个

     

    区别:饿汉模式加载类时候比较慢,但在运行时获得对象的速度比较快,线程比较安全

    懒汉模式加载类的时候比较快,但是在运行时获得对象的速度比较慢,线程不安

    简单来说:饿汉是用空间换时间,懒汉就是用时间换空间

    Singleton:

    package com.imo;
    
    public class Singleton {
        //1.将构造方法私有化,不允许外部创建对象
        private Singleton(){
            
        }
        
        //2.创建类的唯一实例,使用private static 修饰
        private static Singleton instance = new Singleton();
        
        //3.提供一个用于获取实例的方法,使用public static 修饰
        public static Singleton getInstance(){
            return instance;
        }
    
    }

    Singleton2:

    package com.imo;
    
    public class Singleton2 {
        //1.构造函数私有化,不允许外部创建对象
        private Singleton2(){
            
        }
    
        //2.创建类的唯一实例,并用private static修饰
        private static Singleton2 instance;
        
        //3.提供一个获取实例的方法,用public static 修饰
        public static Singleton2 getInstance(){
            if(instance==null){
                instance = new Singleton2();
            }
            return instance;
        }
    
        
    }

    Test:

    package com.imo;
    
    public class Test {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //饿汉模式
            Singleton s1 = Singleton.getInstance();
            Singleton s2 = Singleton.getInstance();
            if(s1==s2){
                System.out.println("s1和s2是同一个实例");
            }else{
                System.out.println("s1和s2不是同一个实例");
            }
            
            //懒汉模式
            Singleton2 s3 = Singleton2.getInstance();
            Singleton2 s4 = Singleton2.getInstance();
            if(s3==s4){
                System.out.println("s1和s2是同一个实例");
            }else{
                System.out.println("s1和s2不是同一个实例");
            }
            
        }
    
    }
  • 相关阅读:
    子类父类拥有同名的方法时……
    大道至简第六章阅读感想
    大道至简第五章阅读感想
    java中子类与基类变量间的赋值
    继承与接口的使用
    产生10个随机数求和及一些产生随机数相关知识
    【文件处理】xml 文件 SAX解析
    【文件处理】xml 文件 DOM解析
    【文件处理】RandomAccessFile
    【Directory】文件操作(初识文件操作二)
  • 原文地址:https://www.cnblogs.com/sunxiaoyan/p/8874611.html
Copyright © 2011-2022 走看看