AntNest是吸收了Go语言的Interface模型的iOS的App模块化解耦编程的框架

网友投稿 651 2022-10-22

AntNest是吸收了Go语言的Interface模型的iOS的App模块化解耦编程的框架

AntNest是吸收了Go语言的Interface模型的iOS的App模块化解耦编程的框架

AntNest

简介

AntNest 是吸收了 Go 语言的 Interface 模型的 iOS 的 App 模块化解耦编程的框架。

完全解耦的面向接口插件化模块开发运行框架模块具体实现与接口调用分离易扩展的模块生命周期、事件分发

设计原则

Go 语言的 Interface 模型蚁巢的蚁室蚁道模型

基本架构

antRoom 为单独的模块antChannel 为 antRoom 之间的通信通道

模块的生命周期

目前支持的模块的生命周期时间:

基本的系统事件易扩展事件分发系统

基本的系统事件

目前的支持的基本的系统事件:

applicationDidEnterBackgroundapplicationWillEnterForegroundapplicationDidFinishLaunchingWithOptionsapplicationDidBecomeActiveapplicationWillResignActiveapplicationDidReceiveMemoryWarningapplicationWillTerminateapplicationSignificantTimeChange

在子模块中实现对应的方法,AntNest 就会自动的分发到对应的模块。

@implementation ANOrderAntRoomANT_EXPORT_ANTROOM()+ (AntRoomLevel)antRoomLevel { return 1;}+ (instancetype)createInstance:(NSDictionary *)launchOptions { return [ANOrderAntRoom new];}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"ANOrderAntRoom room"); return YES;}@end

扩展事件分发系统

AntNest 扩展事件分发是很方便的,举个简单的列子分发推送事件(AntNest 已经这个事件接口)

定义事件接口

@protocol ANRemotePushEvent - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler ;@end

定义 AntNest 扩展实现接口,不用去实现具体的方法

@interface AntNest (ANRemotePushEvent)@end

注册事件接口

[[AntNest sharedAntNest] registerProtocolEvent:@protocol(ANRemotePushEvent)];

触发事件

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler { [[AntNest sharedAntNest] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];}

模块

模块注册

ANT_EXPORT_ANTROOM()

模块创建

实现 AntRoomProtocol 协议

antRoomLevel 表示模块的初始化优先级

+ (AntRoomLevel)antRoomLevel { return 1;}+ (instancetype)createInstance:(NSDictionary *)launchOptions { return [ANOrderAntRoom new];}

模块通讯

模块间的通讯是通过 AntChannel 进行通讯,里面传递的都是实现 AntProtocol 协议对象。

假如我们要获取一个服务支持如下功能

@property(nonatomic, strong) NSString *orderID; @property(nonatomic, strong) NSString *customerName; @property(nonatomic, strong) NSString *shopName; - (void)payOrder;

自定义一个 Protocol 获取服务实例

@protocol ANOrderDetailProtocol @property(nonatomic, strong) NSString *orderID; @property(nonatomic, strong) NSString *customerName; @property(nonatomic, strong) NSString *shopName; - (void)payOrder;@end...id orderDetail = ANT_CHANNEL(ANOrderDetailProtocol, [[ANAntDes alloc] initWith:@"ANOrderDetailAnt"])

ant service 注册

AntChannel 中传递的都是 ant service,

ANT_EXPORT_ANT()+ (AntType)antType { return @"OrderDetailAnt";}+ (instancetype)createInstance:(id)antDescription { ANOrderDetailViewController *order = [ANOrderDetailViewController new]; order.title = antDescription.orderID; order.customerName = antDescription.customerName; order.shopName = antDescription.shopName; return order;}

Requirements

XCode

Installation

AntNest is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "AntNest"

Author

License

AntNest is available under the MIT license. See the LICENSE file for more info.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis判断空字符串的问题
下一篇:「业务架构」业务架构师的工具箱:简介
相关文章

 发表评论

暂时没有评论,来抢沙发吧~