`

设计模式(1)-创建型-单件(Singleton)模式 (个人笔记)

 
阅读更多

提起设计模式,确实有不少著作讨论它,<<设计模式>>一书理论化很强,我这里干脆整理出一些用代码来体现的实例来说明。

第一个就是Singleton模式,意指始终保证只创建或得到一个唯一的实例。

其代码如下:

提起设计模式,确实有不少著作讨论它,<<设计模式>>一书理论化很强,我这里干脆整理出一些用代码来体现的实例来说明。

第一个就是Singleton模式,意指始终保证只创建或得到一个唯一的实例。

其代码如下:

package com.sql9.created;

/**
* @author iihero
*/

class SafeSingleton
{
public static class Holder
{
private static SafeSingleton instance = new SafeSingleton();
}

private SafeSingleton()
{
System.out.println("SafeSingleton initialized here....");
}

public static SafeSingleton getInstance()
{
return Holder.instance;
}

}

public class Singleton
{
private static Singleton _instance;

private Singleton()
{
}

public static Singleton getInstance()
{
synchronized(Singleton.class)
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}

public static void main(String[] args)
{
System.out.println(Singleton.getInstance());
System.out.println(Singleton.getInstance());

System.out.println(SafeSingleton.getInstance());
System.out.println(SafeSingleton.getInstance());
}

}

结果如下:

com.sql9.created.Singleton@c17164
com.sql9.created.Singleton@c17164
SafeSingleton initialized here....
com.sql9.created.SafeSingleton@14318bb
com.sql9.created.SafeSingleton@14318bb

总结:

这里SafeSingleton采取了lazy initialized方式来初始化,只有第一次调用时才会初始化Singleton这个实例。比Singleton类的实现要好一些。不加synchronized()的Singleton在多线程环境下,则会出现问题,可能出现同时初始化的情况。



<script type="text/javascript"><!-- google_ad_client = "ca-pub-7104628658411459"; /* wide1 */ google_ad_slot = "8564482570"; google_ad_width = 728; google_ad_height = 90; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
分享到:
评论

相关推荐

    设计模式1-创建型模式

    "设计模式1-创建型模式" 设计模式是软件设计中的一种解决方案,它提供了一种通用的设计方案,解决了面相对象系统中重复出现的设计问题。设计模式的学习和运用对软件系统开发有着非常重要的意义,它可以帮助开发者更...

    C#面向对象设计模式纵横谈-1.Singleton 单件(创建型模式)

    在提供的"1.Singleton 单件(创建型模式).wmv"视频文件中,可能详细讲解了Singleton模式的概念、实现方式、优缺点以及在C#中的具体应用实例,包括如何在实际项目中适当地使用和避免滥用Singleton模式。观看该视频可以...

    面向对象设计模式:Singleton 单件(创建型模式)

    李建忠面向对象设计模式视频精讲:Singleton 单件(创建型模式)

    设计模式_--_工厂模式和单件模式

    单例模式是一种常用的对象创建型模式,其核心在于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 **2. 应用场景** - 当系统只需要一个实例对象时,如日志对象、线程池等。 - 需要控制资源的共享访问...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    1. **创建型模式**:这类模式主要关注对象的创建过程,它们提供了一种在不指定具体类的情况下创建对象的方法,使得系统更加灵活和可扩展。 - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点...

    C++设计模式--基于Qt4开源跨平台开发框架

    创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

    [创建型模式] head first 设计模式之单件模式(Singleton)

    **单例模式(Singleton)**是软件设计模式中的一种创建型模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,例如管理共享资源、配置对象或者数据库连接等。单例...

    C#面向对象设计模式纵横谈-创建型模式

    虽然不是严格意义上的创建型模式,但组合模式与创建型模式密切相关,因为它允许我们构建树形结构的对象。它将简单对象和组合对象以一致的方式处理,使客户端代码可以透明地操作单个元素或整个对象结构。 以上创建...

    C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)

    标题和描述均聚焦于"C#面向对象设计模式"之中的"Singleton单件(创建型模式)",这是一种在软件工程领域广泛运用的设计模式,其核心在于确保一个类只有一个实例,并提供一个全局访问点,以实现资源的有效管理和控制。...

    设计模式 单件模式 设计模式 单件模式

    "设计模式-单件模式" 单件模式是指确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享的程序设计方法。单件模式是一种非常实用的设计模式,它可以控制一个类的实例数量,使得调用者可以从...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    创建型模式 - **Factory模式**:提供了一个创建对象的接口,但允许子类决定实例化哪一个类。Factory模式让一个类的实例化延迟到其子类。 - **Abstract Factory模式**:提供了一个创建一系列相关或相互依赖对象的...

    java设计模式---诙谐易懂版

    设计模式一般分为三大类:创建型模式、结构型模式和行为型模式。 3. 根据文件内容,诸葛亮给赵云的三个锦囊妙计可以用策略模式来实现。每个妙计对应一个实现了策略接口的具体策略类。例如,BackDoor类实现了...

    C#视频-面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)

    C#视频-面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)

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

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

    设计模式精解-GoF23种设计模式解析附C++实现源码

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

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    创建型模式关注的是对象的创建机制,它们使得系统能够独立于如何创建、组合这些对象。 - **1.1 Factory模式**:Factory模式定义了一个创建对象的接口,但允许子类决定实例化哪一个类。该模式使一个类的实例化延迟到...

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

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

    C#面向对象设计模式纵横谈\2 创建型模式Singleton单件模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第2节:创建型模式Singleton单件模式

Global site tag (gtag.js) - Google Analytics