什么是数据库/ Web是细节

时间:2016-05-05 06:18:14

标签: design-patterns architecture software-design

我正在article阅读此"Uncle" Bob Martin。他在标题框架和驱动程序

下提及
  

网络是一个细节。数据库是一个细节。

我无法通过" detail"来理解他的意思。请再解释一下。

1 个答案:

答案 0 :(得分:1)

在面向对象编程中,我们发现最好以抽象的,以域为中心的设计编写任何应用程序;也就是说,任何应用程序的核心最好是“一堆库类”,它们对输入或输出的特定形式(例如UI或数据库)一无所知。 Martin的文章主要讨论如何构建这些类。然后,使用这些类是特定于UI和数据库的代码。您的应用程序的核心无论是Web应用程序还是控制台应用程序,或者是按键式音频手机的应用程序。

因此,网络或数据库仅仅是一个细节,因为它不会(实际上也不会)影响域逻辑的核心。

当然,网页详细信息可能很复杂,但理想情况下,他们都会关注呈现正确的HTML,Javascript,CSS和内容文件以及收集用户的输入和“业务逻辑”(或域)逻辑)将留给核心系统,而不是网络特定的。

在当今的Web开发环境中,丰富的客户端功能使得该方案更难以掌握。最后,您可能有两个“域系统”:主服务器端域代码,这似乎是Martin正在讨论的内容,以及客户端域,它可能有自己的抽象以域为中心的体系结构,通常是在Javascript中。像Angular和Aurelia这样的框架和库正试图提供一些额外的工具来在客户端实现健壮的抽象以域为中心的体系结构。对于这些客户端架构,Bob叔叔可能会说他们调用的Web服务以及他们操作的DOM都是“只是细节”;以域为中心的体系结构的核心在于控制器,视图模型与控制器,视图模型交互的控制器,库或服务功能。

除了评论中提到的资源外,还可以查看DDD(域驱动设计)的概念。