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

Java菜鸟学习笔记--设计模式篇(一):Singleton Pattern(单例设计模式)

 
阅读更多

什么是Singleton Pattern?



单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

Singleton Pattern 动机


对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要


Singleton Pattern 特点


单例模式的三个特点:
1,该类只有一个实例
2,该类自行创建该实例(在该类内部创建自身的实例对象)
3,向整个系统公开这个实例接口


Singleton Pattern 图示








Singleton Pattern 实现



1.经典单例模式实现



1.当然第一步创建一个单利类

//创建一个单例类
public class Singleton{


		} 

2.单例模式的要求之一就是只有一个子类,让然不能给外界使用构造器了

//1如何做到不让这个类只有一个实例?--首先把构造器访问权限设为private
	private Singleton(){
			//里面我爱做什么是我的事情
		}

3.构造器都没了你让我怎么创建实例?--你不用创建~我给你就行

public static Singleton getInstance(){
		
		
		return new Singleton();
		
		} 
4.可是这样我想要几个调用几次,这就是你说的单例?--没有,工作还没弄到一半呢,基本原则就是我创建好了给你,

而且是创建唯一一个实例,还是你需要时候我才创建给你。先在类里面生命个对象

//6.我里面声明一个对象,先不new,在方法里面new,当然是要设为static的
	private static Singleton uniqueInstance=null;//uniqueInstance表示独一无二的实例


5.然后咱在修改方法

public static Singleton getInstance(){
		
		//return new Singleton();//4.那你每次调用这个都可以得到新的实例,没区别了啊
		//5.当然不能直接返回咯,加以个判断条件,我就创建一个唯一实例给你
		//7.判断调用,第一次调用当然为对象当然为null,那我new一个给你
		if(uniqueInstance==null){
			
			uniqueInstance=new Singleton();	
			
			}
		//8.如果第一次上面就自动new一个,第二次到第n次,我就返回之前那个给你
		return uniqueInstance;
		
		} 

6.这样是不是就可以实现单例模式了?我们测试一下吧

	public static void main(String[] args){
		
			//9.测试是不是同一个类
			Singleton my=Singleton.getInstance();
			Singleton your=Singleton.getInstance();
			if(my==your){
				
				System.out.println("my 和 your 指向同一个对象空间!");
				//输出了:my 和 your 指向同一个对象空间!

				}
		
		}

7.这样就可以实现单例模式了!完整代码

//经典的单例模式(Singleton pattern)
package me.singleton;

//创建一个单例类
public class Singleton{
	
	//6.我里面声明一个对象,先不new,在方法里面new,当然是要设为static的
	private static Singleton uniqueInstance=null;//uniqueInstance表示独一无二的实例
	
	
	//1如何做到不让这个类只有一个实例?--首先把构造器访问权限设为private
	private Singleton(){
			//里面我爱做什么是我的事情
		}
	//2.把构造都设为private了,那你怎么得到对象?--暴露个方法给你咯
		
	public static Singleton getInstance(){
		
		//return new Singleton();//4.那你每次调用这个都可以得到新的实例,没区别了啊
		//5.当然不能直接返回咯,加以个判断条件,我就创建一个唯一实例给你
		//7.判断调用,第一次调用当然为对象当然为null,那我new一个给你
		if(uniqueInstance==null){
			
			uniqueInstance=new Singleton();	
			
			}
		//8.如果第一次上面就自动new一个,第二次到第n次,我就返回之前那个给你
		return uniqueInstance;
		
		} 
	public static void main(String[] args){
		
			//9.测试是不是同一个类
			Singleton my=Singleton.getInstance();
			Singleton your=Singleton.getInstance();
			if(my==your){
				
				System.out.println("my 和 your 指向同一个对象空间!");
				//输出了:my 和 your 指向同一个对象空间!

				}
		
		}
	
	}





作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).


分享到:
评论

相关推荐

    java设计模式----单例模式

    在Java编程语言中,设计模式是一种经过验证的解决常见软件设计问题的最佳实践。单例模式是其中最常用的一种,它的核心思想是确保一个类只有一个实例,并提供全局访问点。单例模式的应用场景包括:控制资源的访问、...

    单例模式 Singleton Pattern

    ### 单例模式 Singleton Pattern #### 概述 单例模式是一种常见的设计模式,属于创建型模式之一。这种模式的核心在于确保某个类只有一个实例存在,并且提供一个全局访问点来获取该实例。单例模式在Java开发中尤其...

    Singleton pattern单例模式应用

    单例模式(Singleton Pattern)是一种常用的软件设计模式,在系统中确保某个类只有一个实例,并提供一个全局访问点。这种模式通常用于控制资源的消耗,比如数据库连接、线程池等,以及确保某个系统配置的一致性。 #...

    c++-设计模式之单例模式(Singleton Pattern)

    单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于需要全局共享资源的场景,比如配置管理、日志记录等。 单例模式的组成 私有构造函数:防止外部...

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

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

    大话设计模式--Singleton(单例模式)

    单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...

    极客学院java-23种设计模式

    - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,减少类的实例化过程。 - 工厂方法模式(Factory Method):定义一个用于创建...

    学习JAVA-23种设计模式

    - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 建造者模式(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 原型模式(Prototype):通过复制...

    Java面向对象(高级)- 单例(Singleton)设计模式

    单例设计模式是面向对象编程中的一种常见设计模式,它的主要目的是确保一个类在整个程序运行期间只有一个实例,并提供全局访问点。这种模式在Java中被广泛应用,尤其是在需要控制资源的共享,如数据库连接池,线程池...

    设计模式C++学习之单例模式(Singleton)

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,避免重复构造过程。 - 工厂方法模式(Factory Method):定义一个创建对象的...

    设计模式整理代码-pattern.zip

    - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定...

    设计模式专题之(一)单例模式---设计模式单例模式模式示例代码(python--c++)

    单例模式是软件设计模式中的一种基础且广泛应用的模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在资源管理、配置对象、缓存等场景下非常常见,因为它可以避免因频繁创建和销毁对象而...

    设计模式--单例模式java例子

    单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于可以控制实例的数量,减少资源消耗,同时便于协调整个...

    java设计模式-单例.pdf

    ### Java设计模式——单例模式详解 #### 一、单例模式概述 单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景...

    java之 ------ 几种常见的简单设计模式

    单例模式是Java中最基础也是最常用的设计模式之一,它帮助我们有效地管理程序中的共享资源。无论是简单的饿汉式还是复杂的懒汉式,开发者可以根据具体的应用场景选择最适合的方式实现。随着并发编程的需求日益增加,...

    java23种设计模式详解+源码(绝对详解)

    - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):...

    这是一套 Java 设计模式的集合示例-design-pattern.zip

    在"design-pattern.zip"这个压缩包中,我们很可能会找到一系列与Java设计模式相关的代码示例和文档。"design-pattern-master"可能是项目主目录的名字,暗示着这是一个完整的源码仓库。 设计模式分为三大类:创建型...

    设计模式-单例设计模式

    单例模式是一种常见的创建型设计模式,其核心思想在于确保一个类仅有一个实例存在,并且该实例由该类自行创建,随后向整个系统提供这一唯一实例。 #### 类图解析 在设计模式中,类图是一种直观展示类结构及关系的...

Global site tag (gtag.js) - Google Analytics