The Clean Architecture

http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

The Clean Architecture_第1张图片

在过去几年里,我们已经看到了很多关于系统架构的文章,包括:

  • Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software
  • Onion Architecture by Jeffrey Palermo
  • Screaming Architecture from a blog of mine last year
  • DCI from James Coplien, and Trygve Reenskaug.
  • BCE by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach
虽然这些架构在细节上不同,但总体来说也非常类似。它们都关注分离的目标。这些目标都是将软件分层。每一层最少包含业务规则或者接口(界面)。

这些架构都有下面的特征:

1.独立的框架

这些架构不依赖某些特定库的加载。这样你就能把框架当做工具,而受到框架的制约限制。


2.可测试性

业务规则可以在没有用户界面、数据库、网页服务器或其它外部因素的情况下进行测试。


3.独立的用户界面

用户界面可以很容易改变,而不用改变系统的其它部分。一个网页用户界面可以用控制台替换,同时,还不用改变业务规则。


4.独立的数据库

你可以切换到Oracle,或者SQL Server,Mongo,BigTable,CouchDB,再或者其它的数据库。你的业务规则不和特定数据库绑定。


5.独立的外部代理

事实上,你的业务规则不应该感触到外部世界的存在。


文章开始的那个图就是希望能这些架构的理念都集成在一起。


剩下的部分不翻译了。有需要的看原文吧。


你可能感兴趣的:(The Clean Architecture)