iOS 设计模式
Posted xiaoxiaobukuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 设计模式相关的知识,希望对你有一定的参考价值。
一、六大设计原则
- 单一职责原则
- 依赖倒置原则
- 开闭原则
- 里氏替换原则
- 接口隔离原则
- 迪米特法则
1、单一职责原则
一个类只负责一件事
2、依赖倒置原则
抽象不应该依赖于具体实现,具体实现可以依赖于抽象
3、开闭原则
对修改关闭、对扩展开放
4、里氏替换原则
父类可以被子类无缝替换,且原有功能不受任何影响
5、接口隔离原则
使用多个专门的协议,而不是一个庞大臃肿的协议
协议中的方法尽量少
6、迪米特法则
一个对象应当对其他对象有尽可能少的了解
高内聚、低耦合
二、责任链
问题:
解决方案:
BusinessObject.h
@class BusinessObject;
typedef void(^CompletionBlock)(BOOL handled);
typedef void(^ResultBlock)(BusinessObject * _Nullable handler, BOOL handled);
@interface BusinessObject : NSObject
// 下一个响应者(响应链构成的关键)
@property (nonatomic, strong) BusinessObject *nextBusiness;
// 响应者的处理方法
- (void)handle:(ResultBlock)result;
// 各个业务在该方法当中做实际业务处理
- (void)handleBusiness:(CompletionBlock)completion;
@end
BusinessObject.m
#import "BusinessObject.h"
@implementation BusinessObject
// 责任链入口方法
- (void)handle:(ResultBlock)result {
CompletionBlock completion = ^(BOOL handled) {
// 当前业务处理掉了,上抛结果
if (handled) {
result(self, handled);
} else {
// 沿着责任链,指派给下一个业务处理
if (self.nextBusiness) {
[self.nextBusiness handle:result];
} else {
// 没有业务处理,上抛
result(nil, NO);
}
}
};
//当前业务进行处理
[self handleBusiness:completion];
}
- (void)handleBusiness:(CompletionBlock)completion {
/**
业务逻辑处理,如网络请求,本次照片查询等
*/
}
@end
三、桥接
一个关于业务解耦的问题:
类构成
四、适配器
问题:一个现有类需要适应变化的问题
对象适配器
- 类适配器
1、对象适配器
实现方法
2、类适配器
五、单例
具体实现看后面代码
六、命令模式
- 行为参数化
降低代码重合度
代码实例
以上是关于iOS 设计模式的主要内容,如果未能解决你的问题,请参考以下文章
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段
iOS开发CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX的使用(代码片段
iOS开发CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX的使用(代码片段