`
dr2tr
  • 浏览: 142293 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Design Patterns -- Singleton

阅读更多

1. The intent of the Singleton is to ensure that a class has only one instance and to provide a global point of access to it.

2. A singleton is usually lazy-initialized. [lazy-initialized is like:if( filed == null) { // initial }  return field; ]

3. Symchronize is important in lazy-initialize when initial Singleton (multi-thread).( see book: Concurrent Programming in Java )

4. See the source code of java.util.Collections.SingletonSet

5. UML diagram of Singleton,   see pic:

 

6. To use Singleton, approaches are below:

6.1 use static function to create instance(and make the constractor private so that other can not use it),like:

public class Singleton {
            private static Singleton s;
            private Singleton(){};
        
        // lazy-initialize         
        public static Singleton getInstance() {
         if (s == null)
            s = new Singleton();
          return s;
        }
}

6.2 Use static field to mark whether the single instance has been created, like:

class Singleton {
  static boolean instance_flag = false; // true if 1 instance
  public Singleton() {
    if (instance_flag)
      throw new SingletonException("Only one instance allowed"); //custom exception
    else
      instance_flag = true; // set flag for 1 instance
  }
}

6.3 use Collection: repeat object is not allowed in some collections, can be extended to a specified number of instance of a class.

分享到:
评论

相关推荐

    java-design-patterns-master_JAVAdesignpattens_java_design_

    这个压缩包“java-design-patterns-master”显然是一个专注于Java设计模式的学习资源,旨在帮助开发者深入理解和应用这些模式。下面我们将详细探讨Java设计模式及其在实际开发中的应用。 1. **单例模式(Singleton...

    Head-First-Design-Patterns-master.zip

    《Head First设计模式》是一本深受开发者喜爱的设计模式入门书籍,其官方源码库"Head-First-Design-Patterns-master.zip"包含了书中所讲解的各种设计模式的实际代码示例,旨在帮助读者更深入地理解并应用这些模式。...

    Pro-Objective-C-Design-Patterns-for-iOS

    《Pro-Objective-C-Design-Patterns-for-iOS》是一本专注于在iOS平台上利用Objective-C语言实现设计模式的专业书籍。书中旨在帮助已经有一定Cocoa开发基础的开发者,通过掌握设计模式的实践应用,提升软件开发的生产...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...

    design-patterns-c-sharp

    "design-patterns-c-sharp"这个主题涵盖了C#编程环境中如何应用这些模式的知识。 首先,我们需要理解设计模式的基本概念。设计模式并不具体到任何特定的代码或库,而是一种描述在特定情况下如何设计软件组件的通用...

    (FLEX)Advanced ActionScript 3 with Design Patterns - 2006 (Adobe)

    - **(FLEX)Advanced ActionScript 3 with Design Patterns - 2006 (Adobe)** 本书标题明确了其主要内容:针对Flex平台的高级ActionScript 3编程,并结合了设计模式的应用。出版年份(2006)表明了此书首次面世的...

    java-Design-Patterns-chinese.rar_java design patterns

    这个“java-Design-Patterns-chinese.rar”压缩包文件包含了对Java设计模式的详细中文解释,非常适合Java开发者学习和参考。 在Java设计模式中,主要分为三大类:创建型、结构型和行为型模式。 1. **创建型模式**...

    DesignPatterns-master.zip

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

    design-patterns-cpp-master.zip

    在"design-patterns-cpp-master.zip"这个压缩包中,我们可以期待找到C++实现的各种设计模式的代码示例。设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式: - 单例模式(Singleton)...

    Head First Design Patterns-英文高清原版

    《Head First Design Patterns》是一本专注于设计模式的经典图书,该书以其独特的方式将学习材料呈现出来,帮助读者深入理解设计模式,并能够实际应用到Java编程实践中。设计模式作为一种面向对象编程的设计原则,是...

    design patterns - elements of reusable

    创建型模式主要关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory)。这些模式帮助我们有效地管理对象的实例化,使得代码更加灵活且易于扩展。 结构型模式则关注...

    yifanzheng-java-design-patterns-master_java_

    本资源"yifanzheng-java-design-patterns-master"是一个专注于Java设计模式的入门学习项目,作者承诺将持续更新,旨在帮助初学者和开发者更好地理解和应用这些模式。 设计模式通常分为三大类:创建型模式、结构型...

    Design-Patterns-Singleton:单例设计模式示例

    这是单例设计模式的基本示例。 您将在此仓库中找到两个示例。 首先是线程安全的单例,其次不是。...Thread 2 instance is : com.caslaner.designpatterns.singleton.service.CacheUnSynchronized@35c

    Head-First-Design-Patterns-master设计模式官方源码

    3. 单例模式(Singleton Pattern):单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,通常使用双重检查锁定(Double-Checked Locking)或者静态内部类的方式来实现。 4. 建造者模式(Builder Pattern...

    Design Patterns in Modern C++--2018

    Use creational patterns of builder, factories, prototype and singleton Implement structural patterns such as adapter, bridge, decorator, facade and more Work with the behavioral patterns such as ...

    design-patterns-spring-boot:Spring引导中的设计模式

    git clone https://github.com/indrekru/design-patterns-spring-boot.git 您需要在您的环境中安装Maven: Mac(自制): brew install maven Ubuntu: sudo apt-get install maven 正在安装 在环境中安装了Maven...

    DesignPatterns.pdf_objects_designpatterns_

    标题中的"DesignPatterns.pdf_objects_designpatterns_"暗示了这可能是一个关于面向对象设计模式的PDF文档,而描述中的"Design patterns elements of reusable objects"进一步确认了这一点。设计模式的核心理念在于...

    design-patterns-for-humans

    "design-patterns-for-humans" 提供了一种易于理解的方式,将这些复杂的概念转化为普通人也能掌握的智慧。这不仅仅是一份压缩包,更是一份向广大开发者普及设计模式的资源库。 在这个名为 "design-patterns-for-...

Global site tag (gtag.js) - Google Analytics