面对多模块结构设计

最近在公司实习感觉收获挺多的,以前做的项目相对而言会简单一些,或者说自己从结构上没想得到优化那么多
在进行功能划分时可以把一个模块采用动态加载的方式来进行处理
比如说,采用统一的前缀,然后采用同一个protocal,通过runtime的方式找到所有有这个前缀的有这个protocal的类来进行功能分发,这样就能很大的减轻耦合度
还有一个就是优化controller。我原来一直采用的都是通过block放入生命周期那几个函数中来减轻代码的复杂度。公司采用了一个很巧妙的方式,和上面类似但又不太相同,在controller初始化时和几个基础类相关联起来,然后基础类设置parent属性来指向controller,在每一个生命周期方法中调用基础类的该方法(会用canperform判断一下),这样就能把功能模块移动到其他位置。在基础类中,可以调用controller的一些私有属性而不去放在controller.h,就是采用@dynamic然后在系统找不到的时候调用runtime的转移机制转移到controller上,这样就能直接调用到controller的属性而显得优美。当然,这样可能会产生很多的类,但确实会使每个文件的代码大大减少。我觉得应该能在一些地方和block结合起来会有更好的结果~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • 禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C C...
    GrayLand阅读 1,656评论 1 10
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • 青 春 是 印 在 蓝 天 下 挂 在 柳 梢 头 的 一 痕 春 雪 在 暖 风 里 浅 浅 微 笑 滴 滴 答...
    自由的王子阅读 120评论 0 1