9-2 5大设计模式

1.哪些设计模式

责任链
桥接模式
适配器
单例模式
命令模式

1.1责任链

和链表差不多
就是有一个属性是自己
@class BusinessObject;
typedef void(^CompletionBlock)(BOOL handled);
typedef void(^ResultBlock)(BusinessObject *handler, BOOL handled);

@interface BusinessObject : NSObject

// 下一个响应者(响应链构成的关键)
@property (nonatomic, strong) BusinessObject *nextBusiness;
// 响应者的处理方法
- (void)handle:(ResultBlock)result;

// 各个业务在该方法当中做实际业务处理
- (void)handleBusiness:(CompletionBlock)completion;
@end

响应链

1.2桥接模式


1.3适配器

@interface Target : NSObject
- (void)operation;
@end


// 适配器
@interface CoolTarget : NSObject
// 被适配对象
@property (nonatomic, strong) Target *target;
// 对原有方法包装
- (void)request;
@end

@implementation CoolTarget
- (void)request
{
    // 额外处理    
    [self.target operation];    
    // 额外处理
}
@end

1.4单例模式

#import "Mooc.h"

@implementation Mooc

+ (id)sharedInstance
{
    // 静态局部变量
    static Mooc *instance = nil;
    
    // 通过dispatch_once方式 确保instance在多线程环境下只被创建一次
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        // 创建实例
        instance = [[super allocWithZone:NULL] init];
    });
    return instance;
}

// 重写方法【必不可少】
+ (id)allocWithZone:(struct _NSZone *)zone{
    return [self sharedInstance];
}

// 重写方法【必不可少】
- (id)copyWithZone:(nullable NSZone *)zone{
    return self;
}

@end

1.5命令模式

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

推荐阅读更多精彩内容

  • 人生事, 不如意者十之八九, 尽人力听天命而已。 我们左右得了自己, 左右不了世事,更左右不了别人。 命中有时终须...
    饥者求食阅读 3,287评论 0 10
  • 今天的计划路线从理塘到禾泥乡。早上起床发现特别的冷。昨天的理塘旅舍后面的山上这会都白茫茫一片了。看来今天...
    骑行浪子阅读 4,189评论 2 3

友情链接更多精彩内容