04 | 项目大了人员多了,架构怎么设计更合理?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了大型 iOS 工程的架构设计问题,从作者亲身经历出发,提出了传统的 MVC 架构在大型项目中的不足,并探讨了模块粒度划分、分层设计和多团队协作等关键问题。强调了遵循 SOLID 原则和选择合适的模块粒度对于架构设计的重要性,同时介绍了组件化的概念及实施方法。文章还分享了在团队分工上的见解,强调了团队分工要灵活,围绕具体业务进行功能模块提炼,以解决重复建设的问题。作者还详细介绍了协议式和中间者两种架构设计方案,并重点推荐了中间者架构模式,强调了其易管控和易扩展性,使得整体架构能够长期保持稳健与活力。总的来说,本文为读者提供了宝贵的经验和建议,涵盖了架构设计的方方面面,具有一定的借鉴意义。文章通过案例分享和小结,强调了架构设计的重要性和灵活性,鼓励读者在日常工作中不仅要关注具体业务开发,还要对整体架构有清晰的认识和思考,以提升自身的技术视野和解决问题的能力。
《iOS 开发高手课》,新⼈⾸单¥59
全部留言(111)
- 最新
- 精选
- Sasori协议化的方式有两个好处,一是可以明确知道组件提供了哪些服务,二是组件一旦修改了接口会立刻引发编译错误,而CTMediator会推迟到运行时。
作者回复: 是的,CTMediator会在运行时进行管控。其实在中间者那一层加上记录,还能够进行运行时代码覆盖率统计
2019-03-19217 - 曾剑南老师,这里面讲到了架构方面的知识,有什么入门的资料可以推荐一下吗
作者回复: 入门我推荐阮一峰老师的《软件架构入门》http://www.ruanyifeng.com/blog/2016/09/software-architecture.html
2019-03-1916 - wang组件化架构的目的主要是解耦各个具体业务模块的耦合,而在业务模块的内部也还是需要用到像MVC、MVP、MVVM这些设计模式。 大神,我的理解是没错吧
作者回复: 是的
2019-03-19310 - Geek_2844bdswift项目架构解藕有什么好的推荐吗
作者回复: CTMediator 也能用在 Swift 上 https://github.com/ModulizationDemo/SwfitDemo
2019-03-194 - 流氓兔现在负责的是一个很小的项目,用的还是普通的MVC模式,是否也需要改变架构,就是说,在小型项目中(没有变成大项目的可能性),使用中间者架构会不会更麻烦了
作者回复: 小型项目其实是可以用中间者架构的,也是为了做大做准备
2019-03-194 - Hello灬麦德姆戴明老师,我对这个有些疑问,接口隔离原则:接口的用途要单一,不要在一个接口上根据不同入参实现多个功能。假如我需要实现功能,显示或隐藏一个试图,那我是应该写两个方法,一个是func show()一个是func hide()吗,这个隐藏或显示功能应该算一个功能还是两个功能呢?或者说刨根问底,这个功能划分到什么程度呢?
作者回复: 显示和隐藏都是针对某个视图的展示用,属于相通功能。如果要把视图是否能点击同时当作参数传入控制,就属于两个功能了
2019-08-143 - Boomm协议式编程接口定义模式过于规范,从而使得架构的灵活性不够高。 老师好,我理解目前主流的协议式编程基本是ModuleManager+Protocol—Class注册的方式. 即组件将提供的服务以Protocol为key, protocol—impl为value,注册到Manager中. 这样调用方不直接依赖组件,只依赖组件提供的Protocol即可. 我认为这里和CT一个很大的不同是调用方除了Manager(中间者)还需要依赖对应的Protocol才能发现服务,而CT只依赖中间者. 但是对于老师提到的Protocol方式过于规范导致灵活性降低,有一点疑惑. Protocol方式如果组件提供的接口有变更,需要修改protocol和对应的impl,而CT同样需要修改CTMediator+组件X这个分类,这里不灵活具体体现在哪里呢? 恳请戴老师解惑!
作者回复: VSCode 支持开发者开发插件,那么他设计的插件这套架构就是灵活的,多一个插件和少一个插件对于整个 VSCode 不会有影响。微信小程序架构也是类似,这里的灵活是指的这个。
2019-04-1222 - 几缕阳光依赖反转原则:方法应该依赖抽象,不要依赖实例。 这句话应该怎么理解?我有点懵哦,希望大神能举个栗子。
作者回复: 协议式编程
2019-04-052 - Geforceyu自己写了一个模块化解耦方案的DEMO,请大佬过过目 https://github.com/Geforceyu/FisherMan
作者回复: 赞
2019-03-282 - 执意为莱戴老师,从开是到现在一直是一个人开发,对于组件化或者架构一窍不通,该如何下手呢?
作者回复: 参与开源项目积累大型项目经验
2019-03-272