单例模式 饿汉式 ARC

有了前两篇的文章这里直接给出代码,这种方法不是纯粹的饿汉式,比较懒汉式代码会容易一点点,但是苹果官方不推荐,了解一下就好.

此时没有多线程的困扰,使用之前就创建一个单例对象,此时还没有线程.所以不需要加锁.

static id _instance = nil;

+(void)load{//该类加载之后load就会被自动调用,

_instance = [[self alloc] init];

}

alloc new 都会来到这里,所以在这里重写更合适.

+ (id)allocWithZone:(struct _NSZone *)zone

{

if (_instance == nil) { // 防止创建多次

_instance = [super allocWithZone:zone];

}

   return _instance;

}

- (id)copyWithZone:(NSZone *)zone

{

return _instance;

}

+ (instancetype)sharedMusicTool

{

return _instance;

}

时间: 2024-12-27 22:53:12

单例模式 饿汉式 ARC的相关文章

java GOF23单例模式-饿汉式图

原文地址:https://blog.51cto.com/14437184/2439983

饿汉式单例模式和懒汉式单例模式

饿汉式单例模式 /** * 饿汉式单例模式 */ package com.you.hai.model; /** * @author YouHaiDong * */ public class Singleton { //实例化 private static Singleton instance = new Singleton(); /** * 无参构造函数私有化 */ private Singleton() { } /** * 通过该方法获取实例对象 * @return */ public sta

设计模式-单例模式(饿汉式及懒汉式的Java实现)

单例模式 单例模式在程序设计中使用的频率非常之高,其设计的目的是为了在程序中提供唯一一个对象(保证只被构造一次),例如写入日志的log对象,windows的任务管理器实现(只能打开一个).这里主要介绍单例模式使用Java的实现(包括饿汉式及懒汉式). 实现 这里使用Log类作为例子,Log对象需要在程序中只有一个对象且只初始化一次. 饿汉式 饿汉式的单例模式理解起来是比较容易的,就是在单例类加载的时候就初始化需要单例的对象.实现也比较容易. public class Singleton{ pri

Java单例模式《一》饿汉式

package com.study.mode; /** * 单例模式:饿汉式. 线程安全. * @ClassName: SingleBean * @author BlueLake * @date 2012年9月5日 下午8:45:10 */ public class SingleBean { //1.私有化构造方法 private SingleBean(){ } //2.创建当前对象的静态实例. private static SingleBean single= new SingleBean()

单例模式的简单描述(饿汉式,饱汉式,双重锁模式)

一.什么时候使用单例模式: 当实例存在多个会引起程序逻辑错误的时候 二.好处: 1.减少内存的占用 2.单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 3.因为类控制了实例化过程,所以类可以灵活更改实例化过程 三.缺点: 1.开销 虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销.可以通过使用静态初始化解决此问题. 2.可能的开发混淆 使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对

JAVA中的饿汉式和饱汉式单例模式及jdk中Runtime类的单例模式实现方式详解

一.描述 单例模式是一种非常常见的设计模式,即一个类只能有一个对象(实例),一般通过将该类的构造器私有化,来阻止在该类外创建该类的对象,并提供给外界一个唯一的对象(这个对象在该类中创建). java中的单例模式常见的有两种实现方式,一种是恶汉方式,即将该类对象用static休息并且在类加载的时候进行初始化:另一种是饱汉方式,在程序中需要用到该对象的时候才初始化,一旦初始化一次就不会再重新生成该对象. JDK中的Runtime类其实也是一种单例模式,而且其采用的是饿汉的方式. 二.源代码 pack

[转]设计模式--单例模式(一)懒汉式和饿汉式

单例模式是设计模式中比较简单的一种.适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统, 它们都是原型的例子.典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问 指针,这便是众所周知的单例模式的应用.当然这只有在你确信你不再需要任何多于一个的实例的情况下. 单例模式的用意在于前一段中所关心的.通过单例模式你可以: 一.确保一个类只有一个实例被建立 二.提供了一个对对象的全局访问指针 三.在不影响单例类的客户端的情况下允许将来有多个实例 经典的单

单例模式的各种写法和总结 懒汉式 饿汉式 登记式

public class Singleton {//懒汉式单例类 /** 懒汉式单例类. 只在外部对象第一次请求实例的时候才会去创建 优点:第一次调用时才会初始化,避免内存浪费. 缺点:必须加锁synchronized 才能保证单例 */ private static Singleton singleton; private static final ReentrantLock lock = new ReentrantLock(); private static AtomicInteger co

单例模式の懒汉式和饿汉式

单例模式,是用来解决一次只能实例化一个对象的问题. 根据对象实例化的先后,有两种实现方式: 懒汉式 饿汉式 下面是在代码中有详细的说明两种实现方法 package 设计模式; /* * 单例的设计模式(饿汉式) * 1.解决的问题:使得一个类只能够创建一个对象 * 2.如何实现 * */ public class SingletonTest { public static void main(String[] args) { Singleton s1 = Singleton.getInstanc