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”显然是一个专注于Java设计模式的学习资源,旨在帮助开发者深入理解和应用这些模式。下面我们将详细探讨Java设计模式及其在实际开发中的应用。 1. **单例模式(Singleton...
《Head First设计模式》是一本深受开发者喜爱的设计模式入门书籍,其官方源码库"Head-First-Design-Patterns-master.zip"包含了书中所讲解的各种设计模式的实际代码示例,旨在帮助读者更深入地理解并应用这些模式。...
《Pro-Objective-C-Design-Patterns-for-iOS》是一本专注于在iOS平台上利用Objective-C语言实现设计模式的专业书籍。书中旨在帮助已经有一定Cocoa开发基础的开发者,通过掌握设计模式的实践应用,提升软件开发的生产...
**设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...
"design-patterns-c-sharp"这个主题涵盖了C#编程环境中如何应用这些模式的知识。 首先,我们需要理解设计模式的基本概念。设计模式并不具体到任何特定的代码或库,而是一种描述在特定情况下如何设计软件组件的通用...
- **(FLEX)Advanced ActionScript 3 with Design Patterns - 2006 (Adobe)** 本书标题明确了其主要内容:针对Flex平台的高级ActionScript 3编程,并结合了设计模式的应用。出版年份(2006)表明了此书首次面世的...
这个“java-Design-Patterns-chinese.rar”压缩包文件包含了对Java设计模式的详细中文解释,非常适合Java开发者学习和参考。 在Java设计模式中,主要分为三大类:创建型、结构型和行为型模式。 1. **创建型模式**...
- 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,避免重复的构造过程。 - 工厂方法模式(Factory Method):定义一个用于创建...
在"design-patterns-cpp-master.zip"这个压缩包中,我们可以期待找到C++实现的各种设计模式的代码示例。设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式: - 单例模式(Singleton)...
《Head First Design Patterns》是一本专注于设计模式的经典图书,该书以其独特的方式将学习材料呈现出来,帮助读者深入理解设计模式,并能够实际应用到Java编程实践中。设计模式作为一种面向对象编程的设计原则,是...
创建型模式主要关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory)。这些模式帮助我们有效地管理对象的实例化,使得代码更加灵活且易于扩展。 结构型模式则关注...
本资源"yifanzheng-java-design-patterns-master"是一个专注于Java设计模式的入门学习项目,作者承诺将持续更新,旨在帮助初学者和开发者更好地理解和应用这些模式。 设计模式通常分为三大类:创建型模式、结构型...
这是单例设计模式的基本示例。 您将在此仓库中找到两个示例。 首先是线程安全的单例,其次不是。...Thread 2 instance is : com.caslaner.designpatterns.singleton.service.CacheUnSynchronized@35c
3. 单例模式(Singleton Pattern):单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,通常使用双重检查锁定(Double-Checked Locking)或者静态内部类的方式来实现。 4. 建造者模式(Builder Pattern...
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 ...
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_"暗示了这可能是一个关于面向对象设计模式的PDF文档,而描述中的"Design patterns elements of reusable objects"进一步确认了这一点。设计模式的核心理念在于...
"design-patterns-for-humans" 提供了一种易于理解的方式,将这些复杂的概念转化为普通人也能掌握的智慧。这不仅仅是一份压缩包,更是一份向广大开发者普及设计模式的资源库。 在这个名为 "design-patterns-for-...