拜读《设计模式之禅》之单例模式

前言:
  提及到“单例模式”,觉得该设计模式相对于其他设计模式还是很好理解的,而且用处也非常之大。
  在 Java 的开发中,对于内存的概念不是很清晰,因为 Java 有着GC帮我们进行内存回收,而且项目也是运行在PC主机上。总感觉8G内存妥妥的,所以也就没有过于关注过内存的使用情况。所以一直觉得“单例模式”并无太大用处。
  而在学习 iOS 的过程中发现原先不用考虑内存的情况变了,因为 iOS 手机的运行内存,让人必须去考虑内存分配的情况。原先觉得可有可无的“单例模式”到了 iOS 的开发中有了用武之处。
  以上纯属个人见解。

概念
  “单例模式”是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

总结
  “单利模式”是为了保证某个类在系统只有一份,而提出的解决方案。

public class Singleton {  
    // 在其他类中屏蔽 new 创建该实例对象
    private Singleton() {}
    // 类加载的时候就会产生单利对象,static 关键字修饰
    private static final Singleton single = new Singleton();  
    // 获取单利的方法
    public static Singleton getInstance() {  
        return single;  
    }  
}

 以上代码所述的“单例模式”又称“饿汉单例”,还有一种“懒汉单例”;“饿汉单例”是不用考虑线程安全的。因为在类加载的时候就会执行 static 修饰的代码,这时候就完成了对象的初始化工作。

参考链接:http://blog.csdn.net/jason0539/article/details/23297037

+(Singleton *)shareSingleton(){
    static Singleton *singleton = nil;
    // 类似 Struts 的 token 验证
    static dispatch_once_t p;
    // 执行的时候会判断 p 是否使用过
    dispatch_once(&p,^{
        // 初始化对象
        singleton = [[Singleton alloc]init];
    });
    return Singleton;
}

 以上 OC 代码与以上 Java 代码效果类似,都是天生自备线程安全的。所以不用去担心线程安全的问题。

参考链接:http://www.cnblogs.com/ygm900/p/3607143.html

感谢互联网。因为互联网,让我们可以更好的站在巨人的肩膀上前行~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
System.arraycopy是Java中的一个方法,用于将一个数组的内容复制到另一个数组中。它的用法是:System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)。其中,src是源数组,srcPos是源数组的起始位置,dest是目标数组,destPos是目标数组的起始位置,length是要复制的元素个数。 System.arraycopy是一种浅拷贝方式,它只是将源数组的引用复制给目标数组,而不会复制源数组中的元素的值。因此,如果原始数组改变了,复制的数组也会发生相应的改变。 关于System.arraycopy的具体实现,可以参考引用中的源码拜读部分。另外,引用中也提到了System.arraycopy是对数组进行复制的常用方法。 在引用的代码示例中,可以看到System.arraycopy的具体用法。首先定义了一个二维数组src,然后使用System.arraycopy将src复制给了dest数组。接着,通过修改src数组的元素,可以观察到dest数组也发生了相应的改变,这正是浅拷贝的特性。 总之,System.arraycopy是Java中用于数组复制的方法,它是一种浅拷贝方式,可以将源数组的内容复制到目标数组中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [System.arraycopy详解](https://blog.csdn.net/yangruidage21/article/details/128519021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值