`
dannyhz
  • 浏览: 392770 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

单例 经典详解

阅读更多

/**
 * 打牌的时候  发牌的总只能唯一吧
 * @author a528692
 *
 */
public class CardManager {
	Card card[] = new Card[54];
	LinkedBlockingQueue<Card> cardBox = new LinkedBlockingQueue<Card>(); 
	
	private CardManager(){
		
	}
	
	public static CardManager getInstance(){
		System.out.println("static method getInstance");
		return CardManagerHolder.instance;
	}
	
	/**
	 * 发牌
	 * @return
	 */
	public Card sendCard(){
		return cardBox.poll(); 
	}
	
	private final static class CardManagerHolder{//final 的对象是被继承的
		private final static CardManager instance = new CardManager();//final 的 属性 是不能被改变值的, 一旦随着静态类生成, 他就在jvm加载类启动的时候,先初始化了
		
	}
}







public class Client {
	public static void main(String[] args) {
		/*
		 * 发牌
		 */
		System.out.println("START");
		CardManager cm = CardManager.getInstance();
		System.out.println(cm.hashCode());
		///CardManager.CardManagerHolder.instance=null;
		CardManager cm2 = CardManager.getInstance();
		System.out.println(cm2.hashCode());
		if(cm == cm2){
			System.out.println("same");
		}else{
			System.out.println("not same");
		}
		
		
	} 
	
	
}


引用


CardManager里面包含了一个CardManagerHolder
把它定义为private static class 内部静态类
那从外部,比如client这个类是无法得到 CardManagerHolder这个类的信息的,如果是public static class 那么这个类型还是能被外面感知的, 如果你不想让外面的类知道你里面的情况,可能用这样的形式 private static class.
此外 , 定义这个里面的 CardManager在CardManagerHolder里设计是private final static , final 表示他的赋值是不能改变的,所有外面客户端拿到这个类就是唯一那个初始化的值new CardManager() , static 表示是类变量,需要被初始化, private 只能被 Outer 引用

分享到:
评论

相关推荐

    单例模式详解~~单例模式详解~~

    单例模式是一种设计模式,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,单例模式常用于控制资源的共享,比如数据库连接池、线程池或者日志系统等,这些资源通常需要全局唯一且高效地...

    C#单例模式详解 C#单例模式详解C#单例模式详解

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...

    Java设计模式-单例模式详解

    Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...

    设计模式之单例模式详解.pdf

    设计模式之单例模式详解 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 单例模式的实现主要是...

    java设计模式之单例模式详解

    Java设计模式之单例模式详解 一、单例模式概览 单例模式(Singleton Pattern)是面向对象设计模式中的一种,属于创建型模式。它确保一个类仅有一个实例,并提供一个全局访问点来访问该实例。单例模式的核心在于控制...

    java 多线程单例模式详解

    ### Java多线程单例模式详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是一种常用的软件设计模式,它确保一个类仅有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁实例化然后销毁的...

    单例模式详解

    单例模式详解 单例模式是 Java 设计模式中的一种常见模式,旨在保证整个应用中只有一个类的实例存在。单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例。下面对单例模式的特点、实现方式和应用场景进行详细...

    单例模式详解.txt

    单例模式的实现机制,并发情况下的单例模式的存在问题及解决方法,无锁的线程安全单例模式

    OC-单例OC-单例OC-单例OC-单例OC-单例

    单例(Singleton)是软件设计模式中的一种,它确保一个类只有一个实例,并提供一个全局访问点。这个模式在OC中非常常见,因为它允许开发者在整个应用生命周期中控制和管理共享资源,比如网络连接、数据库访问或者...

    java单例模式详解

    Java单例模式是一种常见的设计模式,它用于控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式通常用于管理共享资源或者需要频繁创建和销毁的对象,以节省系统资源并提供全局访问点。 单例...

    Kotlin 单例实例详解

    在编程领域,单例模式是一种常用的软件设计模式,它的核心思想是确保一个类只有一个实例,并提供全局访问点。在Kotlin中,实现单例有多种方式,这里我们将深入探讨两种常见的实现方法:同伴对象(companion object)...

    java单例模式详解Java系列2021.pdf

    在软件工程中,单例模式是创建型设计模式之一,其目的是确保一个类仅有一个实例,并提供一个全局访问点。Java语言中的单例模式实现有多种方式,包括饿汉式、懒汉式和登记式单例。不同的实现方式适应不同的场景和需求...

    IOS Swift3 四种单例模式详解及实例(PPT文档)

    在iOS开发中,单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。Swift3中,有四种主要的实现单例模式的方法。这些方法各有优缺点,适应不同的场景需求。以下是对这四种单例模式的...

    【课堂笔记】单例模式详解

    单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于可以控制资源的共享,减少内存开销,以及简化对全局配置...

    IOS Swift3 四种单例模式详解及实例《PPT文档》

    单例模式是一种设计模式,它在软件工程中广泛用于确保类只有一个实例,并提供一个全局访问点。Swift3中,有四种常见的单例实现方式,每种都有其特点和适用场景。下面我们将详细讲解这四种单例模式并提供相应的实例。...

    C# 单例模式详解与线程安全性实现

    内容概要:本文详尽地阐述了 C# 中单例模式的设计思想以及其实现方式,并且特别针对单例模式的线例安全提供了多种解决方案,包括锁(lock),最终给出了一段非线程安全和一段线程安全版本的代码供参考。 适合人群:C# ...

    深入理解JavaScript系列(25):设计模式之单例模式详解

    单例模式是软件开发中一种非常重要的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在JavaScript这样的动态语言中,单例模式的实现方式很多样,而且可以非常灵活。下面,我们就来深入探讨单例模式在...

    PHP单例模式详解及实例代码

    PHP单例模式详解 单例模式的概念 单例模式是指整个应用中某个类只有一个对象实例的设计模式。具体来说,作为对象的创建方式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局的提供这个实例。它...

Global site tag (gtag.js) - Google Analytics