美文网首页
路由器来解耦合项目

路由器来解耦合项目

作者: wsj2012 | 来源:发表于2017-08-21 15:38 被阅读24次

项目随着版本不断的迭代,大多数类于类之间都会存在着依赖,这样会使项目很难来管理和维护,不同业务层很难抽出成独立的模块,非常影响之后的开发效率,因为代码中充斥着臃肿而复杂的业务代码,每个控制器层都会 依赖很多很多的文件。

翻了一下别人的解决方案,router 来解决我觉的挺好的。每个控制都注册在路由中心注册,参数以dic形式来传递,这样貌似就解决了控制层之间的相互依赖。那么怎么来设计router呢? 我们来简单看看这个SDRouter把

typedefvoid(^SDCompleteCallback)(SDRouterContext*context);

@interfaceSDRouter :NSObject

+ (instancetype)shareRutor;

- (void)addPaten:(NSString*)paten callback:(SDCompleteCallback)callback;

- (void)rutor:(NSURL*)paten;

@end

对外就两个方法 ,添加paten(每个控制器类生成的对应的paten),callBack 是 第二个方法 rutorL:要执行的代码块保存

+ (void)load {

[[SDRoutershareRutor]addPaten:OneControllercallback:^(SDRouterContext*context) {

NSLog(@"----: %@",context.paramters);

OneViewController*textOneVc = [[OneViewControlleralloc]init];

textOneVc.navigationItem.title= context.paramters[@"title"];

[context.topNavigationControllerpushViewController:textOneVcanimated:YES];

}];

}

控制器类在 load的时候就会被注册到路由中心。

实现原理:

用一个集合类缓存路由跟处理闭包的对应关系,在app启动的时候,注册好支持的URL,当调用openURL的时候,根据给定的URL查找到对应的闭包,执行闭包代码,实现跳转。找不到对应的闭包的时候,可以定义一个公共的错误页面。

那么路由可以解决什么问题呢?

跳转的时候不用依赖具体的目标类

从外部(web或者其他app,推送)打开App指定

App复杂后组件化后,组件解藕

统一买点可以通过路由进行,因为路由是一个中间件,所以对路由进行AOP就可以

做统一的错误处理页面

那缺点呢?

传参: 因为要传入的参数多样行,所以一般 以字典形式传入

URL的组成:

相关文章

  • 路由器来解耦合项目

    项目随着版本不断的迭代,大多数类于类之间都会存在着依赖,这样会使项目很难来管理和维护,不同业务层很难抽出成独立的模...

  • 工厂模式学习(简单工厂模式--静态工厂)

    解耦合

  • Srping boot自动装配 实现自己的starter

    前言 Srping自动装配非常实用,我们可以利用这个把项目解耦合,真正使用的只需引入即可使用。今天我们来演示下自动...

  • 基于彻底解耦合的实验性iOS架构

    基于彻底解耦合的实验性iOS架构 基于彻底解耦合的实验性iOS架构

  • 为什么工厂模式可以解耦?why?

    1、聊聊解耦? 耦合:代码之间的关联关系称为耦合,具有强关联关系的称为强耦合。 解耦:解除代码之间的关联关系,使每...

  • python gRPC

    最近在用 python 写项目,项目中有许多 AI 服务需要相互调用,为了服务之间的解耦合,想尝试采用 gRPC ...

  • 架构设计之MVP模式

    这几天思考项目重构的问题,我就啰嗦两句。项目重构说白了就是为controller减负,解耦合。之前项目都是使用mv...

  • mq

    为什么要用mq? 解耦 mq可以解耦合,系统a和其他系统紧耦合,用mq,其他系统可以自己pub/sub 异步化 提...

  • Design

    1、解耦:简单数据参数耦合、简单对象耦合、对象参数耦合、语义耦合(模块要了解另外模块的内部细节)2、可扩展3、可重...

  • 消息队列优缺点适用场景

    在项目中为什么要使用消息队列? 消息队列使用场景主要有三个: 解耦,异步,削峰 解耦耦合 如上图所示,可能存在某一...

网友评论

      本文标题:路由器来解耦合项目

      本文链接:https://www.haomeiwen.com/subject/rvjcdxtx.html