目录:
定义-Singleton是什么意思?
单例是仅允许创建其自身的单个实例并提供对该创建实例的访问权的类。 它包含静态变量,可以容纳其自身的唯一实例和私有实例。 当用户希望将类的实例化限制为仅一个对象时,可以使用它。 通常在需要单个对象来协调整个系统中的动作时,这很有用。
单例模式用于Java和.NET等编程语言中,以定义全局变量。 跨系统使用的单个对象保持不变,只需定义一次即可,无需定义多次。
Techopedia解释Singleton
单例旨在仅提供自身的一个实例,同时促进全局访问点。 实现单例模式涉及使用创建类的新实例的方法来创建类。 为了实现单例模式,必须满足单实例和全局访问的原则。 单例类就像其实例的全局存储库,使构造函数私有。 因此,根本无法创建该类之外的实例,并且一个单例只能包含一个实例。 单例类实例化自己,并在系统之间维护该实例。
抽象工厂,构建者和原型模式可以使用单例。 正面对象和静态对象通常是单例。 单例实现需要一种机制,通过该机制可以访问类成员,而不必创建类对象并保持类对象之间类成员的值。 创建单例所涉及的步骤如下:
- 构造函数被设为私有。 这仅允许类访问单例。
- 使用方法创建该类的单个内部实例。 在此示例中,该方法称为实例。 方法“实例”用于初始化类以访问单个实例。 在此示例中,实例方法被标记为静态,以赋予所有线程一致的访问权限。 在实例创建之外,“ lock”语句用于控制多线程访问。 这将实例创建锁定到单个线程。
例:
//延迟创建单例内部实例公共静态测试数据实例
{
得到
{
锁((测试数据的类型))
{
如果(_instance == null)
_instance = testdata();
}
返回_instance;
}
}
例:
类测试数据
{
私人测试数据()
{
// …单身人士请勿
