许式伟的架构课
许式伟
七牛云 CEO
84946 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

加餐 | 实战:“画图程序” 的整体架构

控件对核心系统的伤害值为 1
图形对核心系统的伤害值为 4
分解为核心系统和周边系统
代码量最多的部分
实际伤害值需由所有周边模块共担
对核心系统的伤害值为 16
下期话题是 “全局性功能的架构设计”
评判不同架构方案的好坏
理清核心系统和周边系统的边界
通用控件库
Model 层
creator/rect.js
控件对核心系统的需求评估
与核心系统无关
对核心系统的伤害值需评估
可选组件
由 index.htm、view.js、dom.js 组成
业务核心,不可或缺
结语
模块分析
通用控件库
周边系统
核心系统
架构的最高准则:关注每个模块的业务属性
核心思想:业务的正交分解
前提:修心是成为优秀架构师的基础
主题:架构设计
作者:七牛云许式伟
标题:“画图程序” 的整体架构
参考文章

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

你好,我是七牛云许式伟。
我们先回顾一下 “架构思维篇” 前面几讲的内容:
我们先谈了怎么才能修炼成为一个好的架构师,其中最核心的一点是修心。这听起来好像一点都不像是在谈一门有关于工程的学科,但这又的的确确是产生优秀架构师最重要的基础。
接下来几篇,我们核心围绕着这样几个话题:
什么是好的架构?
架构的本质是业务的正交分解,分解后的每个模块业务上仍然是自洽的。
我们反复在强调 “业务” 一词。可以这样说,关注每个模块的业务属性,是架构的最高准则。
不同模块的重要程度不同,由此我们会区分出核心模块和周边模块。对于任何一个业务,它总可以分解出一个核心系统,和多个周边系统。不同周边系统相互正交。即使他们可能会发生关联,也是通过与核心系统打交道来建立彼此的间接联系。
今天我们将通过第二章 “桌面开发篇” 的实战案例 “画图程序” 来验证下我们这些想法。我们以最后一次迭代的版本 v44 为基础:

整体结构

我们先来分析整个 “画图” 程序的整体结构。除了 index.htm 作为总控的入口外,我们把其他的文件分为以下四类:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过实战案例“画图程序”剖析了架构设计过程中业务属性的重要性,以及对核心系统和周边系统的伤害值分析。作者首先强调了业务属性对架构的重要性,然后通过具体案例验证了架构思想。文章详细分析了整体结构和各个文件之间的关系,以及对核心系统的伤害值计算。此外,对 Model 层进行了进一步分解,并对周边系统对核心系统的伤害值进行了计算。最终得出结论,整个周边系统对核心系统的伤害值为 31,平均每一种图形的伤害值为 1。通过这一讲的内容,读者可以了解到架构设计中业务属性的重要性,以及如何评判不同架构方案的好坏。同时,读者也可以对比自己的架构设计,思考其中的得失。文章内容深入浅出,为读者提供了架构设计方面的实用知识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 不记年
    许老师,有个问题不太明白想请教下您,像rect.js这样的周边系统的代码没有在核心系统里面,根据您之前章节给的公司应该是0啊, 为什么还会有伤害值呢

    作者回复: 接口函数的调用也是耦合,只是是比较良性的耦合。有耦合就有伤害。

    2020-02-10
    3
  • 抓住核心模块,主要的业务逻辑,区分出周边的模块,才能减少伤害值,主次不分的架构,不是好架构

    作者回复: 👍

    2021-11-13
    2
  • CoderLim
    有两个问题想要请教:1、为什么 controller 不是核心模块呢,因为 dom+view 只能构成只读的画图业务,是不是核心业务的缺失呢?2、对于 Model 层,QSerializer 和 QSynchronizer 因为对于 Model 来说去掉不会影响业务,为什么它们是核心模块呢?多谢

    作者回复: 核心与否是相对而言的,也就是对要研究的系统来说,哪个更加必不可少。

    2019-12-17
    2
  • Aaron Cheung
    这块伤害值的计算 真的是学习到了
    2019-11-29
    14
  • 恬毅
    触类旁通,每个系统都可以分出核心模块,周边模块,基础控件,通用控件。比如电商系统,商品,下单,支付属于核心,聊天、优惠券属于周边
    2021-09-02
    1
    1
  • Bravery168
    核心和周边的概念可以用在不同的分解层次上,从多系统角度,系统内部结构,模块划分上都可以这么分。
    2020-02-26
    1
  • leslie
    这个图的画法就梳理的就非常清楚:单独的从架构图流程图而不梳理出核心的模块,就是一种缺失;很多看似觉得挺不错,可是真实做起来就是各种补锅。之前总觉得缺啥却又说不上来,缺的就是模块这块的关联,老师的课程里又学到了一招管用的方法。
    2019-11-29
    1
  • ifelse
    学习打卡
    2023-10-03归属地:浙江
  • Kevin
    简直叹为观止!
    2022-08-25归属地:广东
  • 天天向上
    核心系统 核心领域 企业价值 周边系统 提升效率 通用业务 通用系统 提升效率 通用技术 基础系统 底座支持
    2021-11-04
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部