Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。
还有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能synchronize的安全自动加1,如果你要把这个数字永久保存到数据库,你可以在不修改单态接口的情况下方便的做到。
另外方面,Singleton也能够被无状态化。提供工具性质的功能,
Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。
我们常常看到工厂模式中类装入器(class loader)中也用Singleton模式实现的,因为被装入的类实际也属于资源。
例一.
public class Singleton {
private Singleton(){}
//定义一个private构造方法,只能被内部使用.
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
例二.相对一进行改进.
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次使用时生成实例!
if (instance==null)
instance=new Singleton();
return instance;
}
}
注:这里的synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例.
分享到:
相关推荐
设计模式-Singleton与Factory
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...
综上所述,`dask-actor-singleton-1.1.0.tar.gz`是一个与Dask相关的Python软件包,它针对分布式系统中的单例模式进行了优化,可能整合了Zookeeper来实现更高级别的协调,同时也符合云原生的开发原则。如果你在处理...
这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...
perl-Class-Singleton-1.4-6.el6.noarch.rpm perl-Class-Singleton-1.4-6.el6.noarch.rpm
C#设计模式(7)-Singleton Pattern C#设计模式(6)-Abstract Factory Pattern C#设计模式(5)-Factory Method Pattern C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2...
设计模式 - Singleton Pattern 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。这就是 Singleton Pattern 的设计动机。 Singleton ...
例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...
本项目"MyDemo-qt-singleton"着重展示了如何在QT环境中实现单例设计模式。单例模式是一种保证一个类只有一个实例并提供一个全局访问点的设计模式,常用于控制共享资源的访问,如数据库连接、配置文件或线程池。 在...
在Java编程语言中,设计模式是一种经过验证的解决常见软件设计问题的最佳实践。单例模式是其中最常用的一种,它的核心思想是确保一个类只有一个实例,并提供全局访问点。单例模式的应用场景包括:控制资源的访问、...
在Laravel框架中,设计模式的应用是提升代码质量和可维护性的重要手段之一,而Singleton(单例模式...通过学习和实践`singleton-pattern-master`提供的示例,开发者可以深化对这一模式的理解,并将其应用于实际项目中。
- 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):...
python库。 资源全名:django-singleton-admin-0.0.2.macosx-10.7-intel.exe
创建型模式关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)和建造者模式(Builder)等,它们提供了一种灵活的方式来创建和管理对象,避免了硬编码和紧密耦合。结构型模式关注如何将对象和类组合...
这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建对象的不同策略,使代码更加灵活...
- Singleton 模式 - Observer 模式 9. 设计模式的常见问题: - 如何选择合适的设计模式 - 如何实现设计模式 - 如何避免设计模式的常见错误 10. 设计模式的学习方法: - 通过实践和应用来学习设计模式 - ...
创建型模式主要关注对象的创建过程,比如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory)。它们提供了一种在不指定具体类的情况下创建对象的方法,增加了代码的灵活性和可扩展性。 ...
在Java编程中,单例模式是一种常用的创建型设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。本主题探讨的是线程安全的单例模式实现,特别是饥饿模式(Starvation)和延迟加载(Lazy Initialization)...