• 单利设计模式


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

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

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

     

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

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

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

    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不是同一个实例");
            }
            
        }
    
    }
  • 相关阅读:
    Logistic Regression
    Bootstrap研究2布局系统杂记
    《Programming in Scala》读书笔记(持续更新) passover的个人空间 DOIT博客 多易网
    《Scala, Erlang, F#作者讨论函数式语言》有感
    用python抓取oj题目(0)——重回战场 duoduo3_69 博客园
    Netty vs Apache MINA
    What is Akka?
    Fault Tolerance (Scala) — Akka Documentation
    execute phase · mrdon/mavencliplugin Wiki
    netty和mina的比较
  • 原文地址:https://www.cnblogs.com/sunxiaoyan/p/8874611.html
Copyright © 2020-2023  润新知