Objective-C & SwiftiOS开发学习

iOS组件化方法总结

2018-12-29  本文已影响0人  PandaXiong

集中式设计Centralized Design:各组件依赖Mediator,由Mediator负责调度(调用与跳转)。不可避免在Mediator中引入各组件(可使用runtime来解决)。
Casa观点:target-action
target就是class,action就是selector,通过一些规则简化动态调用。Category 对应第二点,每个组件写一个 Mediator 的 Category。组件通过中间件通信,中间件通过 runtime 接口解耦,通过 target-action 简化写法,通过 category 感官上分离组件接口代码。
蘑菇街:

//Mediator.m 中间件
@implementation Mediator
typedef void (^componentBlock) (id param);
@property (nonatomic, storng) NSMutableDictionary *cache
- (void)registerURLPattern:(NSString *)urlPattern toHandler:(componentBlock)blk {
 [cache setObject:blk forKey:urlPattern];
}

- (void)openURL:(NSString *)url withParam:(id)param {
 componentBlock blk = [cache objectForKey:url];
 if (blk) blk(param);
}
@end

组件注册url,实现block内容。外部组件openURL调用。
思考:block换成protocol会如何
MrPeak:
Runtime方式需要文档来约定,接入难度搞,易出错
分布式设计:Distributed Design
ModuleManager管理各个组件

@interface ModuleManager : NSObject
+ (instancetype)sharedInstance;
- (id<IOrderCartModule>)getOrderCartModule;
- (void)handleModuleURL:(NSString*)url;
@end

各个组件实现相同接口控制组件共同点,实现不同接口实现差异。调用方根据接口调用。

上一篇 下一篇

猜你喜欢

热点阅读