Flutter 核心技术与实战
陈航
前美团点评高级技术专家
42432 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
Flutter 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

41 | 组件化和平台化,该如何组织合理稳定的Flutter工程结构?

Flutter框架架构
业务和UI四象限法则
单向依赖原则
分层划分
功能耦合现象
最小化服务能力
抽象业务模块
剥离基础功能
自完备性
稳定性原则
抽象化原则
单一性原则
将独立的功能进行拆分
管理资源类的依赖
分治架构思想
组件化与平台化
分层逻辑
平台化的概念
组件之间的关系
实施步骤
组件的粒度
组件化的中心思想
DRY原则
总结
平台化
组件化
组件化和平台化

该思维导图由 AI 生成,仅供参考

你好,我是陈航。今天,我们来聊一聊 Flutter 应用的工程架构这个话题。
在软件开发中,我们不仅要在代码实现中遵守常见的设计模式,更需要在架构设计中遵从基本的设计原则。而在这其中,DRY(即 Don’t Repeat Yourself)原则可以算是最重要的一个。
通俗来讲,DRY 原则就是“不要重复”。这是一个很朴素的概念,因为即使是最初级的开发者,在写了一段时间代码后,也会不自觉地把一些常用的重复代码抽取出来,放到公用的函数、类或是独立的组件库中,从而实现代码复用。
在软件开发中,我们通常从架构设计中就要考虑如何去管理重复性(即代码复用),即如何将功能进行分治,将大问题分解为多个较为独立的小问题。而在这其中,组件化和平台化就是客户端开发中最流行的分治手段。
所以今天,我们就一起来学习一下这两类分治复用方案的中心思想,这样我们在设计 Flutter 应用的架构时也就能做到有章可循了。

组件化

组件化又叫模块化,即基于可重用的目的,将一个大型软件系统(App)按照关注点分离的方式,拆分成多个独立的组件或模块。每个独立的组件都是一个单独的系统,可以单独维护、升级甚至直接替换,也可以依赖于别的独立组件,只要组件提供的功能不发生变化,就不会影响其他组件和软件系统的整体功能。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Flutter应用的工程架构是软件开发中的重要话题。本文介绍了组件化和平台化作为客户端开发中最流行的分治手段,以及组件化的基本原则和实施步骤。组件化是将一个大型软件系统按照关注点分离的方式拆分成多个独立的组件或模块,每个组件都是一个单独的系统,可以单独维护、升级甚至直接替换。在组件化中,需要遵循单一性、抽象化、稳定性和自完备性原则。具体实施步骤包括剥离基础功能、抽象业务模块和最小化服务能力。通过这些步骤,可以实现整个业务项目的组件化架构。文章通过详细介绍组件化的原则和实施步骤,为读者提供了在设计Flutter应用架构时的指导和思路。 平台化是组件化的升级,即在组件化的基础上,对它们提供的功能进行分类,统一分层划分,增加依赖治理的概念。平台化强调依赖的顺序性,除了不允许出现下层组件依赖上层组件的情况,跨层组件和同层组件之间的依赖关系也应当严格控制。平台化架构设计时需要重点考虑单向依赖原则,即组件依赖的顺序应该按照应用架构的层数从上到下依赖,不要出现循环依赖的现象。平台化与组件化最大的差异在于增加了分层的概念,使得各个组件之间既保持了独立性,同时也具有一定的弹性。 总的来说,组件化和平台化都是软件开发中流行的分治手段,能够将App内的功能拆分成多个独立的组件或模块。分治是一种与技术无关的架构思想,有利于降低工程的复杂性,从而提高App的可扩展和可维护性。本文重点分享了组件化与平台化这两种架构设计的思路,为读者提供了对App架构设计的核心思想的理解和领会。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 小水滴
    请问有没有好的方式检测组件之间循环依赖或者层级依赖错误呢,这样可以在开发阶段来规避团队错误的使用方式

    作者回复: Dart目前没有特别好用的图形工具可以用来分析依赖,你可以用flutter pub deps来打印工程的完整依赖树,配合简单的字符串扫描脚本,检查下是否存在依赖关系特别深,或是循环依赖的情况

    2019-10-08
    2
  • 小米
    老师,关于架构这一讲,有没有demo可以参考一下?

    作者回复: 没有哈,我觉得讲架构用图更清晰一些,抽象层次更高。讲代码容易陷入细节

    2019-10-26
  • 请问 我目前所做 架构设计稍有不同 第一层是各个模块儿页面 ->各个独立的UI组件(选项卡,slider,bottomSheet,轮播图等等...)->业务逻辑(provider中做逻辑处理然后通知页面)->基础能力模块(网络,加解密,数据存储等...) ,这种方式会有什么隐患或者不足么?

    作者回复: 看起来也没啥问题,只要能够有明确的组件划分边界,能够满足业务需求就好

    2019-10-19
    2
  • 我在做的App静态资源类主要包括image,color ,icon font ,svg,animation,多语言词条以及一些静态的.json文件,目前我的做法是会写一个脚本去扫描对应的路径生成一个对应的索引类 ex: class AnimationAssets { static const String clock = 'assets/animations/xx.json'; static const String gold = 'assets/animations/xx.json'; }

    作者回复: 类似Android R文件的思路,挺好的

    2019-10-19
  • 神佑小鹿
    Dart 目前没有特别好用的图形工具可以用来分析依赖,你可以用 flutter pub deps 来打印工程的完整依赖树,配合简单的字符串扫描脚本,检查下是否存在依赖关系特别深,或是循环依赖的情况
    2023-04-08归属地:广东
    2
  • 小何
    感觉都是组件化和平台化结合的啊,平台化里面也在用组件化吧
    2021-07-22
    1
  • 陈士玉
    关于平台化的讲解深受启发,过去的工作中在组件化的基础上有下意识的运用平台化的一些思想(比如单向依赖),但是没有系统的思考过。非常有收获。
    2023-11-10归属地:北京
  • bily
    和我目前设计的架构思想几乎一致
    2020-08-30
  • outman
    请教一下,能不能将fluttet这个控件做成组件,比如一个Button ,然后在原生页面使用这个flutter做的button ?
    2020-05-21
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部