美文网首页
单例模式

单例模式

作者: 风车过也 | 来源:发表于2017-10-24 17:38 被阅读0次

    什么叫单例模式

    是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例

    单例简介

    单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义

    iOS单例的定义

    +(SingalClass*)shareInstance {

    //利用GCD创建一个单例模式

    //第一个参数predicate,该参数是检查后面第二个参数所代表的代码块是否被调用的谓词,第二个参数则是在整个应用程序中只会被调用一次的代码块。dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。

    static dispatch_once_t once;

    dispatch_once(&once, ^{

    single=[[SingalClass alloc] init];

    });

    return single;

    }

    单例优缺点

    优点:

    1:一个类只被实例化一次,提供了对唯一实例的受控访问。

    2:节省系统资源

    3:允许可变数目的实例。

    缺点:

    1:一个类只有一个对象,可能造成责任过重,在一定程度上违背了“单一职责原则”。

    2:由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。

    3:滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

    相关文章

      网友评论

          本文标题:单例模式

          本文链接:https://www.haomeiwen.com/subject/aojxpxtx.html