2024年Go最全C语言编程的准则、设计模式、软件架构及思想_c语言架构设计(2),美团架构师深入讲解Golang开发

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

接口这个概念我们一定不陌生,实际生活中最常见的例子就是:插座!

我们只需要事先定义好插座的接口标准,各大插座厂商只要按这个接口标准生产,管你什么牌子、内部什么电路结构,这些均和用户无关,用户拿来就可以用;而且即使插座坏了,只要换一个符合接口标准的新插座,一切照样工作!

同理,实际代码设计也是这样!

我们在设计一个软件的代码架构时,我们都希望事先约定好各个功能的接口(即:约定好接口签名和方法),实际开发时我们只需要实现这个接口就能完成具体的功能!后续即使项目变化、功能升级,程序员只需要按照接口约定重新实现一下,就可以达到系统升级和扩展的目的!

模块化编程

模块化是一种处理复杂系统分解为更好的可管理模块的方式。

所谓的模块化开发就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能。模块化开发的基础就是函数。模块化开发使用代码耦合度降低,模块化的意义在于最大化的设计重用,以最少的模块、零部件,更快速的满足更多的个性化需求。
模块化编程的核心思想也正是如此: 将系统的各个功能进行封装,变成一个个独立的模块,其他人只需要使用你所提供的函数和变量等,就可以完成相对应的功能

模块化的本质也就是,新建一个.c和.h文件,

.c文件里面存放着你所构建的函数,功能,等等,而当你想让他可以被其他文件使用时,这时候便需要在对应的.H之中声明,

在外部调用时,只需要#include包含相对应的.h 即可。下图是一个嵌入式软件项目中的程序结构图。博客连接:嵌入式C语言之—模块化编程

image-20210707221246594

软件分层架构

分层架构是运用最为广泛的架构模式,几乎每个软件系统都需要通过层(Layer)来隔离不同的关注点(Concern Point),以此应对不同需求的变化,使得这种变化可以独立进行;此外,分层架构模式还是隔离业务复杂度与技术复杂度的利器。

操作系统和计算机网络的使用了软件分层架构,我们学习操作系统和计算机网络也一般是一层一层的来学习的。

具有良好模块设计的代码,至少分为两种形式:

  • 整体设计没有层次之分,但也有独立的子模块,子模块彼此之间耦合甚少,这些子模块构成了一个软件层,共同为上层应用提供服务;
  • 整个库/软件拥有明显的层次之分,从最底层,与应用业务毫无相关的一层,到最顶层,完全对应用进行直接实现的那一层,每一个相对高层的软件层依赖于更底层的软件层,逐层构建。

上述两种形式并非完全分离,在分层设计中,某一层软件层也可能由若干个独立的模块构成。另一方面,这里也不会绝对说低层模块就完全不依赖于高层模块。这种双向依赖绝对不是好的设计,但事实上我们本来就无法做出完美的设计。

在软件架构中,经典三层架构自顶向下由用户界面层(User Interface Layer)、业务逻辑层(Business Logic Layer)与数据访问层(Data Access Layer)组成。该分层架构之所以能够流行,是有其历史原因的。在提出该分层架构的时代,多数企业系统往往较为简单,本质上都是一个单体架构(Monolithic Architecture)的数据库管理系统。这种分层架构已经是Client-Server架构的进化了,它有效地隔离了业务逻辑与数据访问逻辑,使得这两个不同关注点能够相对自由和独立地演化。一个经典的三层架构如下所示:
image-20210707220543611

可重用性

代码可重用的精髓,我认为可以用unix哲学的两个点来说明:

Write programs that do one thing and do it well. 写出来的代码只做一件事,并且把这件事作好。
Write programs to work together. 写出来的代码,相互之间要一起协作。
可重用性也是在

2. 区别和联系

面向过程是软件的基础,面向对象编程也包括了面向过程,可以这么说,面向对象是在面向过程的基础上发展而来的。

面向接口编程则不是和上面的面向过程和面向对象是同一层面的概念。在模块化编程中,我们通过.h文件暴露接口给调用者,在软件分层架构中,下层也要向上层通过接口提供服务。

模块化编程则是按照功能来进行模块划分,在模块内,我们的编码可以使用面向过程、面向对象。

软件分层则相比模块化更深入了一步,将软件分成了几层,每一层中可能包括几个模块,有句话叫做,分层是大智慧,分模块是小智慧。一般使用了软件分层的架构在每一层中都会继续分模块。

3. 项目代码架构思路

在我们进行了系统设计之后,我们一般构造软件架构的思路都是先构建抽象程度最高的分层,再根据每个分层需要提供的内容决定每个分层中应该有哪些模块。

后面就是数据结构的设计及每个模块的具体实现。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

58159)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值