`
isiqi
  • 浏览: 16345901 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

单例类

 
阅读更多


如果一个类始终只能创建一个实例,则这个类被称为单例类。在一些特殊情况下,系统会不允许自由创建某个类的对象,二十一只能为该类创建一个对象,此时就可以把该类的构造方法使用private修饰,将其所有的构造方法隐藏起来。一旦把该类的构造方法隐藏起来,则需要提供一个public方法,作为该类的访问点,用于创建该类的对象,并且该方法必须使用static修饰(因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类),除此之外,该类还必须缓存已经创建的对象,否则随后他无法知道是否曾经创建国对象,也就无法保证值创建一个对象。为此该类需要使用一个属性来保存曾经创建的对象,且因为属性需要被上面的静态方法访问,所以必须使用static修饰,基于上面的介绍,我们来创建一个单例类:

class Single {

// 使用一个变量来缓存创建的实例

private static Single single;

// 将构造方法使用private修饰,隐藏该构造方法

private Single() {

}

// 提供一个静态方法用于返回Single实例,该方法可以假如自定义的控制,保证值产生一个Single对象

public static Single singleT() {

if (single == null) {

single = new Single();

}

return single;

}

}

public class SingleTest {

/**

* @author 肖阳

*/

public static void main(String[] args) {

// 创建Single对象 不能通过构造方法,只能通过singleT方法

Single s1 = Single.singleT();

Single s2 = Single.singleT();

System.out.println(s1 == s2);

}

}

程序输出:true

通过上面的singleT方法提供的自定义控制,保证Single类只能产生一个实例,所以在SingleTest类的main方法中看到两次产生的Single对象实际上是同一个对象


分享到:
评论

相关推荐

    Java单例类

    Java单例类是一种常见的设计模式,具有三个特点:单例类只能有一个实例、单例类必须自己创建自己的唯一实例、单例类必须给所有其他对象提供这一实例。单例模式可以分为三种:懒汉子式单例、饿汉子式单例、注册式单例...

    提供外界访问的两个方法和单例类一起使用

    提供外界访问的两个方法!--和单例类一起使用!面试时经常用到!

    ios播放单例类 singleton

    在本案例中,"ios播放单例类 singleton"是一个专门用于管理音频播放的单例类,名为`SoundManager`。这个类的设计目的是解决在多个视图之间播放音频时可能遇到的问题,如声音的重叠或者不协调。通过使用单例,开发者...

    FMDB的自定义单例类的数据库demo

    **FMDB自定义单例类数据库Demo详解** 在iOS应用开发中,数据库是存储和管理数据的重要工具。FMDB是一个Objective-C的SQLite数据库管理库,它使得在iOS中使用SQLite数据库变得简单易行。本教程将详细介绍如何创建一...

    游戏编程之单例类与对象工厂的简单介绍与实现

    【单例类】 单例类是一种设计模式,它的核心思想是确保一个类在整个应用程序的生命周期中只存在一个实例。这种模式通常用于控制共享资源,比如日志管理、配置管理或者像游戏中的敌人类和声音管理器等需要全局访问的...

    apache mina与单例类集合实现网络通讯V1.0

    在"apache mina与单例类集合实现网络通讯V1.0"这个项目中,我们可以推测其核心是利用Apache Mina进行网络通信,并结合Java中的单例模式和集合类来优化和管理网络连接。下面将详细介绍这些关键知识点: 1. **Apache ...

    Sqlite3 C++ 简单单例数据库操作类封装

    为了保证线程安全,单例类的实例化通常会在第一次调用`getInstance()`时进行,使用互斥锁或原子操作来确保多线程环境下的正确性。此外,还需要考虑在程序退出时关闭数据库连接,防止资源泄露。 总结来说,"Sqlite3 ...

    Autohotkey_L的单例类实现

    在Autohotkey_L中实现单例类是一个重要的编程概念,用于确保类只有一个实例并提供全局访问点。这在处理资源管理、配置共享或跨脚本通信时特别有用。 首先,我们需要理解单例模式的基本原理。单例模式是一种设计模式...

    ios-FMDBsharedInstance 多线程FMDB单例类.zip

    当我们谈论“ios-FMDBsharedInstance 多线程FMDB单例类”时,我们关注的是如何在多线程环境中高效、安全地使用FMDB的单例模式。 首先,让我们了解FMDB的基本概念。FMDB是Facebook开源的一个Objective-C SQLite库,...

    C++中的单例模式及按需释放模型

    特别是在大型项目中,随着单例类的数量增加,这种问题更加突出。 为了解决这个问题,我们需要实现一个按需释放的单例模式,即在确定不再使用某个单例时,能够及时地释放其占用的内存。要做到这一点,单例类需要具备...

    C++单例模式示例代码

    1. 封锁构造函数:单例类的构造函数通常声明为私有(private),防止外部直接实例化。 2. 创建静态成员变量:定义一个静态私有成员变量,用于存储单例实例。 3. 提供公有静态获取实例的方法:这个方法通常称为`...

    java单例模式的例子

    - 扩展困难:如果需要为单例类添加新功能,修改代码可能会影响其他模块。 - 难以测试:由于没有构造函数,单元测试变得复杂。 - 可能违反单一职责原则:单例类可能承担过多职责,不符合设计原则。 在实际开发中...

    FxVideo播放Vungle的单例类

    ios接入Vungle视频广告的单例类,测试Vungle 6.32版本,XCode 10.1 文章地址:https://blog.csdn.net/linna321521/article/details/87629835

    C++单例类模板详解

    C++单例类模板详解 单例类模板是一种特殊的类设计模式,旨在确保在整个系统生命期中,一个类最多只能有一个实例存在。这种设计模式可以避免对象之间的复制和编译错误,提高程序的稳定性和可靠性。 单例类模板的...

    unity中涉及的三种单例模式

    在Unity游戏开发中,单例模式是一种常用的编程设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在处理需要跨场景共享数据的情况时尤其有用,因为Unity的场景切换可能导致对象被销毁,而单例则...

    C#单例类的实现方法

    C#单例类的实现方法 C#单例类是指在整个应用程序中保证只有一个实例的类,单例类的实现方法有多种,每种方法都有其特点和适用场景。下面将详细介绍五种常见的单例类实现方法。 实现1:懒汉式,线程不安全 懒汉式...

    PHP里的单例类写法实例

    首先,我们定义了一个单例类`UTIL`,这个类包含了一个私有的静态变量`$instance`用于存储类的唯一实例,以及一个公共的静态方法`get()`用于获取这个实例。这个方法内部会判断`$instance`是否已存在,如果不存在则...

    Qt多工程调用单例实现,带线程锁

    描述中提到的"DataSource是一个单例类,做了测试在不同类中调用单例函数依旧能保证唯一性",这表明DataSource类已经被正确地设计为单例模式。在单例类中,通常会有一个静态成员函数(如getInstance())来返回唯一的...

    单例模式,single

    2. **类加载器问题的解决**:为了解决不同类加载器加载同一个类产生的问题,可以在单例类中添加一个私有构造函数,并在构造函数中进行检查,确保每次加载的都是同一个实例。 3. **序列化问题的解决**:如果单例类...

Global site tag (gtag.js) - Google Analytics