加餐 | 实战:“画图程序” 的整体架构
许式伟
该思维导图由 AI 生成,仅供参考
你好,我是七牛云许式伟。
我们先回顾一下 “架构思维篇” 前面几讲的内容:
我们先谈了怎么才能修炼成为一个好的架构师,其中最核心的一点是修心。这听起来好像一点都不像是在谈一门有关于工程的学科,但这又的的确确是产生优秀架构师最重要的基础。
接下来几篇,我们核心围绕着这样几个话题:
什么是好的架构?
架构的本质是业务的正交分解,分解后的每个模块业务上仍然是自洽的。
我们反复在强调 “业务” 一词。可以这样说,关注每个模块的业务属性,是架构的最高准则。
不同模块的重要程度不同,由此我们会区分出核心模块和周边模块。对于任何一个业务,它总可以分解出一个核心系统,和多个周边系统。不同周边系统相互正交。即使他们可能会发生关联,也是通过与核心系统打交道来建立彼此的间接联系。
今天我们将通过第二章 “桌面开发篇” 的实战案例 “画图程序” 来验证下我们这些想法。我们以最后一次迭代的版本 v44 为基础:
整体结构
我们先来分析整个 “画图” 程序的整体结构。除了 index.htm 作为总控的入口外,我们把其他的文件分为以下四类:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文通过实战案例“画图程序”剖析了架构设计过程中业务属性的重要性,以及对核心系统和周边系统的伤害值分析。作者首先强调了业务属性对架构的重要性,然后通过具体案例验证了架构思想。文章详细分析了整体结构和各个文件之间的关系,以及对核心系统的伤害值计算。此外,对 Model 层进行了进一步分解,并对周边系统对核心系统的伤害值进行了计算。最终得出结论,整个周边系统对核心系统的伤害值为 31,平均每一种图形的伤害值为 1。通过这一讲的内容,读者可以了解到架构设计中业务属性的重要性,以及如何评判不同架构方案的好坏。同时,读者也可以对比自己的架构设计,思考其中的得失。文章内容深入浅出,为读者提供了架构设计方面的实用知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》,新⼈⾸单¥68
《许式伟的架构课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(11)
- 最新
- 精选
- 不记年许老师,有个问题不太明白想请教下您,像rect.js这样的周边系统的代码没有在核心系统里面,根据您之前章节给的公司应该是0啊, 为什么还会有伤害值呢
作者回复: 接口函数的调用也是耦合,只是是比较良性的耦合。有耦合就有伤害。
2020-02-103 - 哲抓住核心模块,主要的业务逻辑,区分出周边的模块,才能减少伤害值,主次不分的架构,不是好架构
作者回复: 👍
2021-11-132 - CoderLim有两个问题想要请教:1、为什么 controller 不是核心模块呢,因为 dom+view 只能构成只读的画图业务,是不是核心业务的缺失呢?2、对于 Model 层,QSerializer 和 QSynchronizer 因为对于 Model 来说去掉不会影响业务,为什么它们是核心模块呢?多谢
作者回复: 核心与否是相对而言的,也就是对要研究的系统来说,哪个更加必不可少。
2019-12-172 - Aaron Cheung这块伤害值的计算 真的是学习到了2019-11-2914
- 恬毅触类旁通,每个系统都可以分出核心模块,周边模块,基础控件,通用控件。比如电商系统,商品,下单,支付属于核心,聊天、优惠券属于周边2021-09-0211
- Bravery168核心和周边的概念可以用在不同的分解层次上,从多系统角度,系统内部结构,模块划分上都可以这么分。2020-02-261
- leslie这个图的画法就梳理的就非常清楚:单独的从架构图流程图而不梳理出核心的模块,就是一种缺失;很多看似觉得挺不错,可是真实做起来就是各种补锅。之前总觉得缺啥却又说不上来,缺的就是模块这块的关联,老师的课程里又学到了一招管用的方法。2019-11-291
- ifelse学习打卡2023-10-03归属地:浙江
- Kevin简直叹为观止!2022-08-25归属地:广东
- 天天向上核心系统 核心领域 企业价值 周边系统 提升效率 通用业务 通用系统 提升效率 通用技术 基础系统 底座支持2021-11-04
收起评论