首页 » 99链接平台 » 一文看懂软件分层架构模式(分层架构项目结构耦合)

一文看懂软件分层架构模式(分层架构项目结构耦合)

admin 2024-11-03 05:47:42 0

扫一扫用手机浏览

文章目录 [+]

同理,在设计一个复杂的软件系统的时候,我们也通常使用的一个技术就是分层,每个层只负责完成自身的功能,最后,所有的层整合起来构成一个复杂的软件系统。

在应用软件开发中,N层应用软件模型是一种典型的软件系统架构,也就是所谓的分层架构。
N层的应用软件系统,由于其众多的优点,已经成为典型的软件系统架构,也已经成为构建企业软件的标准。
其中最典型的也就是三层架构。

分层也是计算机技术中的常用方法,一个典型的例子就是TCP/IP技术的OSI七层模型。

一文看懂软件分层架构模式(分层架构项目结构耦合) 99链接平台
(图片来自网络侵删)
软件分层架构优缺点

分层的程序设计带来的好处如下:

1.高内聚低耦合,便于团队开发

内聚:一个模块内各个元素彼此结合的紧密程度;

耦合:一个软件结构内不同模块之间关联程度的度量。

在团队开发中,分层可以让软件开发人员专注于自己负责的层,而不必关心其他层的设计,也不必担心自己的设计会影响其它层。
如果不分层,根本不可能进行团队开发,只会一团糟。

2.使软件升级和维护更为容易

分层设计使得程序结构清晰,升级和维护都变得十分容易,更改层的具体实现代码,只要层接口保持稳定,其他层可以不必修改。
即使层的接口发生变化,也只影响上层和下层,修改工作量小而且错误可以控制,不会带来意外的风险。

分层式结构也不可避免具有一些缺陷:

1.降低系统性能

如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2.有时会导致级联的修改

有时会导致级联的修改。
这种修改尤其体现在自上而下的方向。
如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3.代码量变多

分层后代码量自然要比不分层多。

项目分层方式

1. 按类别(适合小型项目)

在 Android 开发早期,很多项目都是按照类别分层的,就是按照 activity、fragment、adapter 等来进行分层,按照类别进行分层的项目的目录结构大概是下面这种:

相信大家对这种结构非常熟悉,这种分层方式的好处是:

简单明了,很容易知道每个子包下存放的是什么。
一旦项目采用这种分层方式,将来项目无论怎么迭代和变化,目录结构都不需要做太大的改动。

但这种方式缺点也是很明显的,如果项目太大,有上百个界面,那么在 activity 子包下会有上百个类,那样要定位到具体某个功能模块的 activity 会变得很困难,也就是说这种方式不够精细,随着项目迭代功能越来越多,会导致代码导航越来越困难。

2. 按功能(适合中大型项目)

这种分包方式是按照模块划分的,同一功能模块相关的类都在一个文件夹下,项目的目录结构大概如下:

以上的分层可以看到有一个叫feature的包,这里面包含了 app 的一些功能,如 freshnews、login分别代表 app 内部的新鲜事、登录等一些功能模块,这种按功能模块的分层好处很明显:

很直观,可以很方便的根据 app 的功能模块定位到具体的代码。
扩展性良好,如果想在此基础上再按照 MVC、MVP的模式去进一步分层,或者想在此基础上再按照类别去分层,依然可以,只需要 feature 包下某个具体的功能下面再加一层就好了。
高度的模块化,也就是所谓的“高内聚”。
随着 app 的迭代,如果 app 过于庞大,想要实现插件化、组件化,这种分层模式可以省不少事。

但是这种方式也有一些缺点,比如有些项目初期功能一直在变化,如果按照功能木块划分,会导致项目结构一直在变化。
另一方面,如果项目很小,本身就没多少界面,按照这么分层感觉颗粒度太细,有点大材小用的感觉。

其实系统的架构设计是改善耦合的最好方式。
架构设计的本质,就是划分耦合的单位(划分模块)和规范耦合的形式(代码耦合的形式有很多种,如直接调用、事件响应、消息队列等)。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!

标签:

相关文章

开关特性测试仪(开关触发传感器量程特性)

开关特性测试仪是针对各种高压开关研制的一种通用型电脑智能化测试仪器。开关特性测试仪应用光电脉冲技术,单片计算机技术及可靠的抗电磁辐...

99链接平台 2025-01-02 阅读789 评论0