单例模式

单例模式定义

  • 在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。

单例模式应用场景

  • 需要频繁实例化然后销毁的对象。
  • 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
  • 有状态的工具类对象。
  • 频繁访问数据库或文件的对象。

单例模式的特点

判定一个类结构(它使用什么设计模式?)
特点一:构造方法私有化
特点二:定义静态方法返回当前对象
特点三:确保这个对象是唯一的
特点四:确保在序列化和反序列化操作的过程中同样保证同一个对象。
特点五:不允许有子类(太监类->final)swift里有final定义,oc中没有

单例模式角色划分

\color{red}{ 两个角色}
角色一:单例类
角色二:客户端(调用)

单例模式原理案例

角色一:单例类

#import <Foundation/Foundation.h>

@interface MySingle2 : NSObject
+ (instancetype)shareInstance; 
@end

#import "MySingle2.h"

@implementation MySingle2
+(instancetype)shareInstance
{
    static MySingle2 *_mySingle = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _mySingle = [[super allocWithZone:NULL] init];
    });
    return _mySingle;
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
    return [self shareInstance];
}

- (id)copyWithZone:(NSZone *)zone
{
    return self;
}

- (id)mutableCopyWithZone:(NSZone *)zone
{
    return self;
}

角色二:客户端(调用)

    MySingle2 *single02 = [MySingle2 shareInstance];
    NSLog(@"single 02 = %@",single02);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容