• 05.创建型————单例模式


    单例模式分为两种,懒汉式和饿汉式。区别在于创建实例的时机。饿汉式在该类加载时创建实例,懒汉式则在需要获取时才进行创建。

    package Create.f.Singleton;
    
    public class Singleton {
    	private Singleton(){
    		
    	}
    	protected static Singleton getInstance(){
    		System.out.println("获取Singleton单例对象");
    		return instance;
    	}
    	private static Singleton instance = new Singleton(); //饿汉式  注意此时线程安全
    }
    

      

    package Create.f.Singleton;
    
    //懒汉式
    public class Singleton2 {
    	private static Singleton2 instance = null;
    	private Singleton2(){
    		
    	}
    	protected static synchronized Singleton2 getInstance(){
    		if(instance == null){
    			System.out.println("初始化Singleton2单例对象");
    			instance = new Singleton2();
    		}
    		return instance;
    	}
    }
    

      

    package Create.f.Singleton;
    
    public class Client {
    	public static void main(String[] args) {
    		Singleton singleton = Singleton.getInstance();
    		Singleton s = Singleton.getInstance();
    		System.out.println("是否同个对象:" + (singleton == s));
    		
    		
    		Singleton2 s2 = Singleton2.getInstance();
    		Singleton2 s3 = Singleton2.getInstance();
    		Singleton2 s4 = Singleton2.getInstance();
    		
    		System.out.println("是否同个对象:" + (s2 == s3 && s3 == s4));
    		
    	}
    }
    

      

    优点:客户调用类的时候,只能调用一个公共的接口,提供一个共享的概念

    缺点:在多个虚拟机下运行时,要想知道具体哪个虚拟机运行着哪些单例是很困难的,而且可能存在着多线程安全和效率问题,此外还很难实现序列化

  • 相关阅读:
    assign、weak
    iOS 使用 github
    iOS 知识点
    thinkphp 具体常量,在view里面使用
    一个php+jquery+json+ajax实例
    php pdo操作
    nginx缓存
    php模版静态化技术
    php模版静态化原理
    thinkphp实现多数据库操作
  • 原文地址:https://www.cnblogs.com/ciade/p/5095328.html
Copyright © 2020-2023  润新知