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不是同一个实例");
            }
            
        }
    
    }
  • 相关阅读:
    拆点问题
    黑球白球
    3n+1b 备忘录方法
    实体entity、JavaBean、Model、POJO、domain的区别
    DB中的读写分离
    Jmeter干货 不常用却极其有用的几个地方
    自动化测试 自动化框架需要满足的事项
    自动化测试面试题库
    测试工程师面试准备之----测试基础
    别人的面试经历 软件测试工程师
  • 原文地址:https://www.cnblogs.com/sunxiaoyan/p/8874611.html
Copyright © 2011-2022 走看看