架构设计基础

单例模式

2019-03-26  本文已影响0人  架构师的一小步

单例模式定义

单例模式应用场景

单例模式的特点

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

猜你喜欢

热点阅读