zoukankan      html  css  js  c++  java
  • 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));
    		
    	}
    }
    

      

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

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

  • 相关阅读:
    eclipse常用快捷键
    angularJS学习(三)——搭建学习环境
    node.js的安装
    AngularJS学习(二)——Angular应用的解析
    MTK如何烧录IMEI码(俗称串号)
    飞思卡尔IMX515评估板系统烧录和启动
    __asm__ __volatile__("": : :"memory")
    MTK6577+Android4.0之增加重启功能
    WinCE系统声音定制
    介绍一种很棒的wince 如何替换系统声音的方法
  • 原文地址:https://www.cnblogs.com/ciade/p/5095328.html
Copyright © 2011-2022 走看看