「目前为止,所有建议无疑将帮助你设计出更好的软件,这些软件是由具有明确边界、职责、依赖关系受控的元件所组成。本章的重点是要强调,如果不考虑实作策略的错综复杂,那麽你最佳的设计意图可能会付之一炬」
「想想要如何将你的设计对应到程序码结构、如何组织程序码以及在 Runtime & Compile 时期应用哪些解耦模式、在适用的情况下保留选项」
「记得要务实些,要考虑到团队的规模、技术水平以及解决方案的复杂性和时间及预算的限制,并且要注意其他区域(例如资料模型)中的耦合。魔鬼就藏在实作细节中」
取自: Clean Architecture (p.250 & p.264)
让我们暂时先把「整洁的架构」放在一边,来看看几种设计和组织程序码的方法:
水平横向分层架构 (Horizontal Layered Architecture)
最简单的一种设计方法,依据技术角度将程序码水平分层。这些层被用来分类相似型态的东西,层应该只依赖於相邻的层
书中图例:
说明
分析
垂直切片划分 (Vertical Slicing)
书中图例:
分析
「在我看来,两者都不是最理想的选择」
取自: Clean Architecture (p.252)
以业务/领域为中心的程序码
这样的程序码库是由「内部 (Domain)」和「外部 (Infrastructure)」所组成,外部一定要依赖於内部,不会有其他的依赖方式。这种组织原始码的方式也是一种可行的方法
书中图例:
分析
基於元件的架构 (Component Based Architecture)
这是一种混合式方法,目标是将『与单个粗粒度 (Coarse-grained) 有关的所有责任』Bunddle 到单一的 Package 中。这是以服务 (Service) 为中心的软件系统观点
书中图例:
分析
[补充]: C4 Software Architecture Model
经历了前两次的失败,决定还是第一天不要直接写文章! 换个心情,先写了参赛宣言。好好的展开一个挑战的开...
这次的专题实作,从环境问题到实际设计,都遇到一些不同问题: 像是我们日历元件如果在不同装置下去跑,有...
https://bit.ly/2XuVqBJ (这篇必看,不分享对不起自己) //原来南无观世音菩...
Digitization of Sound(声音数字化) Facts about Sound(关於声...
电子助教:「这个标题...我闻到了停刊的味道... (́⊙◞౪◟⊙‵)」 这个章节开始我们要建立「数...