2016-05-05 49 views
2

我读这article通过"Uncle" Bob Martin。他在标题框架和驱动程序下提到。是什么意思通过数据库/网络是详细

Web是一个细节。数据库是一个细节。

我无法理解他的意思是“细节”。请多解释一下。

+4

在本文的上下文中,他意味着Web应用程序/框架和数据库引擎是解决方案的实现细节,而不是该体系结构的核心部分。您应该能够更改这些细节中的任何一个,而无需重新设计系统的体系结构。 – dbugger

+1

@ dbugger击中了头部。这篇文章(https://vimeo.com/43612849)在阐述这篇文章中的观点时值得关注。 –

+0

@dbugger我明白这一点。这个细节词让我很困惑。 – mubeen

回答

1

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

因此网页或数据库,是一个单纯的细节,因为它没有(实际上不可能),影响你的域逻辑的心脏。

当然,网络细节可能非常复杂,但理想情况下,他们都会关注渲染正确的HTML,Javascript,CSS和内容文件并收集来自用户的输入和“业务逻辑”(或域逻辑)将留给核心系统,而不是网络特定的。

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

除了在评论中提到的资源,查找DDD(领域驱动设计)的概念更多。