架构整洁之道一(编程范式)

简介: # 前言 一个不想做架构师的程序员不是一个好程序员。 所以最近在看一本《架构整洁之道》觉得还不错,这里把看过的一些笔记和心得汇总一下。 以便后面自己可以温故知新,也方便小伙伴们可以快速的认识到架构的真谛。扯远了,进入正题。 # 编程范式 先从编程范式开始讲起。目前常见的有3种编程范式:结构化编程、面向对象编程、函数式编程。每种范式的出现,都具有重大意义。 前两种我们比较熟悉。后面一

前言

一个不想做架构师的程序员不是一个好程序员。
所以最近在看一本《架构整洁之道》觉得还不错,这里把看过的一些笔记和心得汇总一下。
以便后面自己可以温故知新,也方便小伙伴们可以快速的认识到架构的真谛。扯远了,进入正题。

编程范式

先从编程范式开始讲起。目前常见的有3种编程范式:结构化编程、面向对象编程、函数式编程。每种范式的出现,都具有重大意义。
前两种我们比较熟悉。后面一种其实出现的更早,只是作为Java开发来说,是最近才慢慢开始接触。
下面针对上面3种范式,进行一个简单的说明解释。

结构化编程

什么是结构化编程,其实我们不知不觉都在使用,且听我娓娓道来。一般机器的运行是按命令来执行的。
例如,在汇编时代,我们编排好一堆命令,让机器去逐条执行,以操控各种硬件。当我们需要控制某些
流程时,就会用到类似goto的语句,让机器执行完本条命令后,跳转到另一条命令执行(这两条命令并不是
按编排好的顺序排放的)。这样就能很灵活的控制程序的流程走向。但人类的思维是连续的,这种goto的
连续跳跃,使人类无法很好的理解程序的意向。于是我们打算做一些约束,同时发现了一套结构化定理:

任何程序都可以用顺序、选择和循环三种基本控制结构来表示。

即在Java的世界里,我们的代码是顺序执行的,使用if-else来代表执行的选择,使用for和while来控制循环。
这样我们就可以很好的屏蔽类似goto语句的使用,使整个程序阅读更加流畅,更加接近人类的理解,
有了以上的铺垫,结构化编程可以总结到一句话:

结构化编程对程序控制权的直接转移进行了限制和规范

面向对象编程

结构化编程思维,还是比较靠近机器运行的思维。那么面向对象编程,就比较靠近人类的思维去编程了。
我们发现,简单靠结构化思维编程,很难构建起一个庞大的应用。在编码过程中,我们也会不知不觉的
把一些逻辑和数据封妆起来。形成一个可复用的组件。也许这就是人性思维。慢慢的,有人把这些习惯
总结成了一套方法论。并扩展了一些概念,让这套理论更加贴切人类的客观世界。对于面向对象编程有很多种说法
一种常见回答是:

面向对象是数据和函数的组合

还有一种回答是:

是一种对真实世界的建模

上面的总结都有道理,但也都不够概全。这里讲一下其中有3个概念是面向对象的核心,即:

封装、继承、多态

封装

在我看来,封装就是把数据和函数组合到一起。类似Java的类,有变量和方法组成。同时,由于封装的特性,
我们可以把一些内部使用的数据和函数隐藏起来。类似Java的权限控制,privite、protect、public等。

继承

简单点讲,就是在封装的基础上,我们可以定义一个所谓的子类,去继承父类的数据和函数。并根据需要,覆盖
其中的一些数据和函数形成子类特有的行为。这点,和现实中人类的DNA继承极为相似。

多态

上面讲继承时,说到了,子类可以覆盖父类的函数,当多个子类都去继承这个父类并覆盖这个函数时,多态其实
已经就开始形成了。此时我们可以使用父类的引用,使用不同子类的实例,调用这个被覆盖的方法,不同的子类实例
就会有不同的表现。所以多态可以用一句话来解释即:

同一个操作(方法或者函数)作用于不同的对象时,可以有不同的解释。

多态是非常有用的,我们可以使用依赖反转把实例化子类的操作剥离出去时,我们的程序设计就天然的变
成了插件式架构,这个后面会细讲,这里先点到为止。

函数式编程

这种编程思想主要是把运算过程尽量写成一系列嵌套的函数调用。我自己简单粗暴的理解是,把函数当作变量看待。且这些
函数有一些限定条件。即只要函数的入参是确定的,出参就是确定。函数不会改变任何变量状态。存粹的函数式编程语言编写
的函数没有变量。在JDK1.8中,已经开始有函数式编程的影子了。

架构师会比较关心变量的可变性。因为所有的并发问题,都是由于变量的可变性导致的。所以,在设计程序的时候,
我们往往需要把不会涉及到变量变更的逻辑,和需要操作变量变更的逻辑分离开来。前者就可以用函数式编程范式构建
函数。分成两个独立组件。前者因为没有对变量的操作,所以绝对线程安全。而且对单元测试也更加的友好。

总结

对于上面的编程范式,我们来总结一下:

结构化编程是对程序控制权的直接转移的限制
面向对象编程是对程序控制权的间接转移的限制
函数式编程是对程序中赋值操作的限制

总的来说,范式是限制编写程序的灵活性,以达到人类友好阅读的目的。所以业务架构从某种意义上来讲
也是在某种领域中限制程序员的一些行为,让他往我们所希望的规范方向编码。从而达到整个系统的简洁。

相关推荐

架构整洁之道一(编程范式)
架构整洁之道二(设计原则)

相关文章
|
1天前
|
Kubernetes API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第11天】 在现代软件开发的快速演变中,微服务架构已成为企业追求敏捷性、可扩展性和技术多样性的关键解决方案。本文旨在探讨如何构建高效的微服务架构,并分析其对后端开发的影响。我们将通过一系列最佳实践和策略,展示如何优化服务的独立性、弹性和性能,同时确保系统的整体稳定性和安全性。文章还将介绍容器化、API网关、服务发现和分布式追踪等关键技术的应用,为后端开发者提供一份全面的微服务实施指南。
|
1天前
|
设计模式 监控 API
构建高效的微服务架构:后端开发的新范式
【5月更文挑战第11天】 在当今的软件开发领域,微服务架构已经成为一种流行的设计模式。它通过将应用程序分解为一组小型、松散耦合的服务来提供高度可扩展和灵活的解决方案。本文将探讨如何构建一个高效的微服务架构,包括选择合适的技术栈、设计原则以及应对常见挑战的策略。我们将深入讨论如何确保系统的可维护性、可靠性和性能,同时考虑到安全性和监控的需求。
|
2天前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第10天】在现代软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将大型应用程序拆分为一组小型、独立和松散耦合的服务来提供更高的可伸缩性和灵活性。本文深入探讨了微服务架构的设计理念、实施步骤以及面临的挑战,并提出了一套实用的策略和最佳实践,帮助后端开发者构建和维护高效的微服务系统。
|
5天前
|
设计模式 Kubernetes 数据库
构建高效可靠的微服务架构:后端开发的新范式
【5月更文挑战第7天】在现代软件开发的浪潮中,微服务架构已经成为一种流行的设计模式。它通过将应用程序分解为一组小的、独立的服务来提高系统的可维护性和扩展性。本文深入探讨了微服务架构的核心概念、优势以及如何利用最新的后端技术构建一个高效且可靠的微服务体系。我们将讨论关键的设计原则,包括服务的独立性、通信机制、数据一致性和容错性,并展示如何在云环境中部署和管理这些服务。
18 3
|
9天前
|
JavaScript Java 持续交付
构建高效微服务架构:后端开发的新范式
【5月更文挑战第3天】 在现代软件开发的浪潮中,微服务架构以其灵活性、可扩展性和技术多样性而受到重视。本文深入探讨了如何构建一个高效的微服务系统,包括关键的设计原则、技术选型、以及实现细节。我们将通过分析微服务的核心概念,提供一套实用的步骤和最佳实践,以指导开发者构建出既健壮又易于维护的分布式系统。文章将重点讨论如何在保证系统性能和稳定性的前提下,实现服务的解耦与独立部署,从而推动后端开发工作流的优化和创新。
|
10天前
|
Kubernetes API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第2天】 随着现代软件开发的演进,传统的单体应用已难以满足快速变化的业务需求和敏捷开发的挑战。本文探讨了如何通过构建高效的微服务架构来提升后端开发的灵活性、可维护性和扩展性。我们将深入分析微服务的核心组件,包括服务拆分、容器化、API网关和持续集成/持续部署(CI/CD)等关键技术,并讨论它们如何共同作用以支持复杂的业务场景和云原生应用的需求。
19 1
|
11天前
|
监控 安全 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第30天】随着现代软件开发的复杂性日益增加,传统的单体应用架构已难以满足快速迭代与灵活部署的需求。微服务架构作为一种新兴的设计理念,它通过将一个大型应用程序拆分成一系列小而专注的服务来提供解决方案。本文旨在探讨如何构建一个高效且可靠的微服务架构系统,涵盖从设计原则、技术选型到部署实践的全方位知识,为后端开发者提供一种全新的开发思路和实践指导。
|
11天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用构建高效微服务架构:后端开发的新范式
【4月更文挑战第30天】 随着企业加速其数字化进程,云原生架构已成为支撑复杂、可伸缩和灵活应用的骨干。本文探讨了云原生技术的崛起,重点分析了其在促进业务敏捷性、提高运营效率及推动创新方面的核心价值。通过深入剖析云原生生态系统的关键技术组件,如容器化、微服务、持续集成/持续部署(CI/CD)和DevOps实践,揭示了企业如何利用这些技术来构建和维护高度可用且动态的IT环境。文章还提出了一个多维度的采纳框架,帮助企业评估和实施云原生解决方案,以实现真正的业务价值。 【4月更文挑战第30天】在现代软件开发的快速演变中,微服务架构已经成为一种领先的设计模式,用于构建可扩展、灵活且容错的应用程序。与传
|
11天前
|
消息中间件 监控 负载均衡
构建高效微服务架构:后端开发的新范式
【4月更文挑战第30天】 在现代软件开发的浪潮中,微服务架构已成为一种广泛采用的设计模式。它通过将大型应用程序拆分成一组小型、松散耦合的服务来增强系统的可维护性、可扩展性和敏捷性。本文将探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术选型、以及实现过程中的最佳实践。我们将深入讨论微服务间的通信机制、数据一致性问题、服务发现与负载均衡策略,以及如何确保系统的安全性和监控。
|
11天前
|
缓存 监控 API
构建高效微服务架构:后端开发的新范式
【4月更文挑战第30天】 随着现代软件开发的演进,传统的单体应用逐渐向微服务架构转变。本文将深入探讨微服务的核心概念、优势以及在设计高效后端系统时所面临的挑战。通过实例分析与最佳实践的结合,我们将揭示如何优化微服务的性能,保证系统的可扩展性、可维护性和安全性。