Logo
Section 1 / 2

简介

让我们来看看本课程如何帮助你构建更优秀的软件架构。

导入

简介

让我们来看看本课程如何帮助你构建更优秀的软件架构。

前言

如果你决定学习本课程,说明你很可能关心所构建软件的架构。你可能希望你的软件不仅满足客户的显性需求,还能满足隐性的可维护性要求,甚至满足你自己对结构和美感的追求。

Course Image

然而,这些目标往往难以实现,因为软件项目(或者说任何项目)通常不会完全按计划进行。管理者不断设定紧迫的截止日期[1^1],外部合作伙伴提供的 #key# API: Application Programming Interface #key# 与原先承诺的不同,而我们依赖的第三方软件产品也常常无法按预期工作。

此外,还有我们自身的软件架构问题。起初一切都很美好,系统运行顺畅。但随着交付期限的压力增大,我们不得不采取一些捷径。如今,这些捷径几乎成了架构的全部,导致新功能的开发耗时越来越长。

这种依赖“走捷径”的架构,使我们难以应对外部合作伙伴出错而导致的 #key# API: Application Programming Interface #key# 变更。此时,与其调整代码,不如让项目经理去与对方交涉,要求他们按照原先约定的方式提供 #key# API: Application Programming Interface #key# 来得更“简单”。

这样一来,我们就彻底失去了对局面的控制。接下来很可能发生以下情况之一:

  • 项目经理未能成功说服外部合作伙伴;
  • 外部合作伙伴在 #key# API: Application Programming Interface #key# 规范中找到漏洞,证明自己并未违约;
  • 对方需要再花几个月才能修复该 #key# API: Application Programming Interface #key#。

无论哪种情况,由于临近交付期限,最终我们都只能自己动手解决问题。

...

于是我们又增加了一个临时补丁。

本课程的目标,就是教你如何不再受外部因素支配,而是主动掌控自己的软件架构。你可以通过构建一种“柔软”的架构来实现这一目标——即具备“灵活性”、“可扩展性”和“适应性”的架构。这样的架构能让你轻松应对各种外部变化,大大减轻开发压力。

本课程的目标是什么?

我编写这门课程,是因为对目前关于领域驱动型架构风格(如 Robert C. Martin 提出的“整洁架构”和 Alistair Cockburn 提出的“六边形架构”)的学习资源缺乏实践指导感到失望。许多书籍或在线资料虽然讲解了有价值的概念,却很少涉及实际编码实现。

这或许是因为这类架构的实现方式本就不止一种。

本课程将填补这一空白,通过实际代码讲解,展示如何以六边形架构风格开发一个 Web 应用程序。为达成这一目标,课程中的代码示例和概念仅代表一种可行的六边形架构实现方式。当然,也存在其他合理的实现路径,我并不声称自己的方法适用于所有场景。

...

但我衷心希望,你能从本课程中找到一些对你有帮助的概念,并将其纳入你自己的技术工具箱。

谁适合学习本课程?

本课程面向所有参与 Web 应用开发、不同经验水平的软件开发者。

作为初级开发者,你将学习如何设计软件模块,以及如何以清晰且易于维护的方式完成应用程序开发。你还将了解在何时应用特定技术的判断依据。不过,建议你此前已有一定的 Web 应用开发经验,以便更好地吸收课程内容。

如果你是经验丰富的开发者,可以通过本课程中的理念与你现有的开发方式对比,选择性地吸收其中的有用部分,进一步完善自己的开发风格。

Course Image

本课程的代码示例使用 Java 编写,但所有讨论内容同样适用于其他面向对象编程语言。即使你不是 Java 开发者,只要能够阅读其他语言的面向对象代码,也能顺利学习。在少数涉及 Java 或特定框架细节的地方,会提供相应的解释说明。

示例应用程序