objective-c 单例
static MyGizmoClass *sharedGizmoManager = nil;
+ (MyGizmoClass*)sharedManager
{
@synchronized(self) {
if (sharedGizmoManager == nil) {
[[self alloc] init]; // assignment not done here
}
}
return sharedGizmoManager;
}
java单例
1,饿汉式单例类
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
2,懒汉式单例类
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。
分享到:
相关推荐
两种单例实现方式 单例模式是指一个类只有一个实例,并且提供了一个全局的访问点来访问该实例。单例模式是一种常用的设计模式,它可以确保某个类只有一个实例,并且提供了一个全局的访问点来访问该实例。 在 Java ...
Qt Quick application单例实现
数据库单例实现
asp.net中c++单例实现问题分析__1.docx
本文实例讲述了Python使用redis pool的一种单例实现方式。分享给大家供大家参考,具体如下: 为适应多个redis实例共享同一个连接池的场景,可以类似于以下单例方式实现: import redis class RedisDBConfig: HOST =...
内含线程池的单例的详细过程,对线程池的学习有着重要参考价值
本资源包含有三个子项目工程,实现的是通过DataSource做数据管理,DataSource是一个单例类,做了测试在不同类中调用单例函数依旧能保证唯一性
实现了单例模型。 vs2015的工程
单例的5中实现及反射和反序列化破解单例。
一个实现应用程序单例打开的Demo。用到了PostMessage和接收消息的方法。对应博文:https://blog.csdn.net/lanwilliam/article/details/81455176
自己用VC2010写的工厂模式和单例模式的实现
单例模式的几种实现方式Demo
Java代码单例实现方式:最全的单例实现方式汇总;
1 饿汉式单例类.在类初始化时,已经自行实例化 class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() ...
单例模式中有区分了懒汉式和饿汉式,懒汉式主要是用时间来换空间,饿汉式则是用空间来换时间。饿汉式是线程安全的,懒汉式是非线程安全的,如果要实现懒汉式的非线程安全,则可以再访问点添加synchronized关键字声明...
c#单例实现方式
单例窗体实现,单例窗体实现,单例窗体实现,单例窗体实现
下面是一个经典的单例实现: ```java public class Singleton { private static Singleton uniqueInstance = null; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == ...