碎碎记:六小时的《架构漫谈》公司内部分享学习会

 

推荐书籍

架构整洁之道、敏捷之道、整洁的程序员、面向模式的软件架构、设计模式等……

编程的道与术

问题——

“人法地,地法天,天法道,道法自然。”

大泥团架构:业务行的代码和技术性的代码混合在一起。没有什么封装。缺乏清晰的结构。难以理解、测试、维护、扩展。

复杂性:多样、耦合(长耦合,宽耦合,空间耦合,实践耦合),变化。

方法:多样:单一职责。耦合:面向接口编程。

架构需要解决的:多样,耦合,变化。


有序的复杂性

软件开发和扩展过程总是倾向混乱的。

通过定义和维护架构来时系统保持井然有序。

架构设计为复杂性引入秩序。

结构比组成更重要。

庖丁解牛:模块化。


架构视图

逻辑视图:对系统进行业务分解。

开发视图:对系统进行子系统分解。

物理视图/部署视图:

进程视图:

场景视图/用例视图

(想起了大学侯爱民教授教的《面向对象与设计》、UML的课程、以及其中的知识点和思想……)


 聚合原则、耦合原则、抽象、封装与分解……(六大设计原则(着重讲到了依赖倒置原则)、设计模式)


 分离业务与技术

 通过一个适配器层,使用技术组件中的类实现业务组件中定义的接口?具体怎么做?

分离礁石与浮沙:稳定与异变

1.接口/抽象类是稳定的,具体类是异变的。两者应该分解道不同的组件中。

(个人思考:一个类,稳定的和异变的分开。那么整个要怎么凭借起来。使用builder模式建造起来,或者使用一个装饰着,再或者用一个中介者,或者用一个适配器,(嗯嗯,又想到了啥,没错,还是设计模式。))

 2.策略是稳定的,机制是异变的。两者应该分解到不同的组件中。

分离大理石与木头:纯粹与杂合

1.要让基础组件尽可能保持纯粹。相互之间不要直接耦合。

2.创建一个杂合的组件,耦合到两个基础组件。

3.在一个杂合的组件中建模实现两个基础组件的关联关系。

例子:雇员,用户,雇员用户类(继承用户,同时关联雇员)。

例子:订单,流水账,展示数据和余额。

分离策略与细节(策略模式)


抛出问题:什么是实现细节?

然后,杨教师开始说到以下的点:

维度、层级与范围;业务与技术之间、领域特定与领域无关。

依赖关系:扇入依赖与扇出依赖。

他说了一个我从来没有意识到的点:“数据库是实现细节。”他说,数据库不应该是一个架构搭建最先考虑的问题。


架构风格

从N层架构到Clean架构——从上下结构到内外结构。

从微服务架构——对齐开发视图、逻辑视图、部署视图和进程视图。

架构分离:横向(技术)——纵向(业务)——横向(技术)

个人理解:比如,在Android项目中,MVP/MVVM包裹整个项目——模块化、组件化开发——业务module开发——MVC/MVP/MVVM模式包裹每个module——通过各种设计模式再具体分离业务和技术。


 文尾个人总结

1.教授所说的,其实更多是从后端的架构的角度阐述。当然,很多思想都是互通的。确实,对我的编程思想影响挺大。

2.那么,从Android开发的角度,我该怎么做呢?其实,我们现在流行的MVP/MVVM以及其他的几种设计模式和设计原则熟练到精通掌握,然后,多读Android 的源码,暂且就够我现在使用(毕业一年多了)。

3.得找个时间,需要花点精力,将文首提到的一些书籍学习一下。

4.“世界是很简单的,就如同爱因斯坦最出名的公式:E=mc²。”将问题复杂化,然后再抽象化,多思考,多总结,继续提升自己,加油。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值