美文网首页
Mediator (中间件、解耦、组件化、设计模式)

Mediator (中间件、解耦、组件化、设计模式)

作者: 土豆赶着鸡 | 来源:发表于2024-03-17 19:08 被阅读0次

Mediator用过的朋友都知道它的优缺点,这篇文章我们来解决它存在的缺点
首先,我们列举一下mediator存在的缺点:
1.每新增一个模块,就要补充一个Category
2.模块A 想要调用 模块B,模块B需要暴漏需要调用的方法
3.参数硬编码问题
4.命名规则并不美观且相对复杂,每个Target都得加Target_A,每个Action都得加Action_
5.编译时候没有类型检查,运行的时候才能发现问题

这里我们提供NSObject+Mediator,解决上面的部分问题:
可以点击查看demo

demo演示一个常用场景:tableView列表,我们希望通过传参viewController、Cell、数据源data来封装一个通用功能

[NSObject performTarget:<target>.classString action:<action> object:<cell> object:<viewController>];
这个方法封装类(TableViewDemo)作为target,action方法也不需要暴漏出来,这个方法主要用来传参并返回对象

[obj performAction:<action> object:data];
刷新tableView数据源调用该方法

以上就是核心代码,完美解决1、2、4问题,但是硬编码问题似乎更严重了,这里的target和action都使用字符串,目前的解决思路是字符串映射+消息转发(resolveClassMethod)去解决参考demo
最后的类型检查是硬伤,毕竟Mediator的核心就是运行时,这样才不会产生依赖。

此外说明一下:NSObject+Mediator如何使用

截屏2024-03-18 19.06.05.png

NSObject+Mediator可以调用绝大数方法:

比如我们要初始化一个labelUILabel *label = [UILabel performAction:@"new"]

比如自定义的类 CustomLabel继承UILabel,UILabel *label = [NSObject performTarget:@"CustomLabel".classString action:@"new"]

其中字符串方法classString是用来区分实例方法和类方法的;
objects是参数大于2个时,使用字典参数,key从@“1”依次递增

给一个关注支持一下,谢谢
有问题可以给我留言

相关文章

  • 组件化的几个方案对比

    组件化(一) CTMediator 设计模式:中介(Mediator)模式 + Target-Action模式 ...

  • iOS组件化/模块化 APP方案实践篇

    1.博客文章: [模块化与解耦](模块化与解耦 - 刘坤的技术博客) 浅析 iOS 应用组件化设计 [iOS组件化...

  • ios组件化/模块化

    1.博客文章: [模块化与解耦](模块化与解耦 - 刘坤的技术博客) [浅析 iOS 应用组件化设计](Skyli...

  • iOS组件化储备

    资料 组件化/模块化 蜂鸟商家版 iOS 组件化 / 模块化实践总结 模块化与解耦 浅析 iOS 应用组件化设计 ...

  • iOS组件化方案实战

    目录 简述 为什么要项目组件化 组件化架构思路 业务模块解耦 组件化实施流程解耦主题国际化切换PrefixHead...

  • 面试3

    12、iOS组件化 iOS组件化及架构设计关于组件化网上组件化的文章很多。很多文章一提到组件化,就会说解耦,一说到...

  • iOS 组件化(一)

    组件化 组件化就是将模块单独抽离,分层,通过制定的通讯方式,实现解耦 组件化优点 模块间的解耦 模块重用 提交团队...

  • cocoapod 组件化之私有库托管

    项目组件化已成标配,优点不再详谈,实现项目模块组件化的需要两步 项目业务模块逻辑解耦,并写中间件进行模块间,模块与...

  • iOS组件化及架构设计

    关于组件化 网上组件化的文章很多。很多文章一提到组件化,就会说解耦,一说到解耦就会说路由或者runtime。好像组...

  • iOS组件化及架构设计(转)

    一篇开源代码的组件化方案 关于组件化 网上组件化的文章很多。很多文章一提到组件化,就会说解耦,一说到解耦就会说路由...

网友评论

      本文标题:Mediator (中间件、解耦、组件化、设计模式)

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