干净的架构The+Clean+Architecture

干净的架构The+Clean+Architecture

ID:37718065

大小:42.71 KB

页数:5页

时间:2019-05-29

干净的架构The+Clean+Architecture_第1页
干净的架构The+Clean+Architecture_第2页
干净的架构The+Clean+Architecture_第3页
干净的架构The+Clean+Architecture_第4页
干净的架构The+Clean+Architecture_第5页
资源描述:

《干净的架构The+Clean+Architecture》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、干净的架构TheCleanArchitecture这是著名软件大师Bob大叔提出的一种架构,也是当前各种语言开发架构。干净架构提出了一种单向依赖关系,从而从逻辑上形成一种向上的抽象系统。我们经常听说过如下各种架构:§六边形架构HexagonalArchitecture (也称为端口和适配器)这是由AlistairCockburn提出,被SteveFreeman和NatPryce在他们的书籍GrowingObjectOrientedSoftware中采取的。§OnionArchitecture 作者JeffreyPalermo§ScreamingArchitecture Bob大叔§DCI 由J

2、amesCoplien和TrygveReenskaug推动§BCE IvarJacobson在他的书籍ObjectOrientedSoftwareEngineering:AUse-CaseDrivenApproach提出虽然这些架构在细节上都略有不同,但他们都非常相似。它们都具有相同的目标,那就是分离关注。他们都通过软件分层来实现这种分离。至少有一个层代表业务规则,而另一个层用于接口。这些架构产生的系统特点是:1.独立的框架.这样的架构并不依赖与应用软件的具体库包,这样可以将框架作为工具,而不必将你的系统都胡乱混合在一起。2.可测试.业务规则能够在没有UI和数据库或Web服务器的情况下被测试。

3、3.UI的独立性.UI改变变得容易,不必改变系统的其余部分,一个WebUI能被一个控制台或专门的图形UI替代,这些读不必更改业务核心规则。1.数据库的独立性.你能够在Oracle或SQL ServerMongo,BigTable,CouchDB,或之间切换,.你的业务规则不会和数据库绑定2.独立的外部代理,其实你的业务规则可以对其外面的技术世界毫无所知,比如是否使用了MVC或DCI都可以不关心。这种干净的架构图如下:依赖规则DependencyRule上图中同心圆代表各种不同领域的软件。一般来说,越深入代表你的软件层次越高。外圆是战术实现机制,内圆的是战略核心策略。使此体系架构能够工作的关键是

4、依赖规则。这条规则规定源代码只能向内依赖,在最里面的部分对外面一点都不知道,也就是内部不依赖外部,而外部依赖内部。这种依赖包含代码名称,或类的函数,变量或任何其他命名软件实体。同样,在外面圈中使用的数据格式不应被内圈中使用,特别是如果这些数据格式是由外面一圈的框架生成的。我们不希望任何外圆的东西会影响内圈层。实体Entities实体封装的是企业业务规则,一个实体能是一个带有方法的对象,或者是一系列数据结构和函数,只要这个实体能够被不同的应用程序使用即可。如果你没有编写企业软件,只是编写简单的应用程序,这些实体就是应用的业务对象,它们封装着最普通的高级别业务规则,你不能希望这些实体对象被一个页面

5、的分页导航功能改变,也不能被安全机制改变,操作实现层面的任何改变不能影响实体层,只有业务需求改变了才可以改变实体。用例UseCases在这个层的软件包含应用指定的业务规则,它封装和实现系统的所有用例,这些用例会混合各种来自实体的各种数据流程,并且指导这些实体使用企业规则来完成用例的功能目标。我们并不期望改变这层会影响实体层.我们也不期望这层被更外部如数据库UI或普通框架影响,这层也是因为关注而外部分离的。我们期望应用层面的技术操作都不能影响用例层,如果需求中用例发生改变,这个层的代码才会发生改变。接口适配器InterfaceAdapters这一层的软件基本都是一些适配器,主要用于将用例和实体中

6、的数据转换为外部系统如数据库或Web使用的数据,在这个层次,可以包含一些GUI的MVC架构,表现视图控制器都属于这个层,模型Model是从控制器传递到用例或从用例传递到视图的数据结构。通常在这个层数据被转换,从用例和实体使用的数据格式转换到持久层框架使用的数据,主要是为了存储到数据库中,这个圈层的代码是一点和数据库没有任何关系,如果数据库是一个SQL数据库,这个层限制使用SQL语句以及任何和数据库打交道的事情。框架和驱动最外面一圈通常是由一些框架和工具组成,如数据库Database,Web框架等.通常你不必在这个层不必写太多代码,而是写些胶水性质的代码与内层进行粘结通讯。这个层是细节所在,We

7、b技术是细节,数据库是细节,我们将这些实现细节放在外面以免它们对我们的业务规则造成影响伤害。只有四个圈层吗?这个圆圈图是示意性的。您可能会发现您需要的不仅仅是这四个。也没有规定说你必须始终只有这四个。然而,依赖规则始终适用。源代码的依赖关系总是由外向内。当你越向内时,抽象水平越高。而最外面的一圈是低层次的具体细节。当你越向内时软件变得越为抽象,封装了更高层次的策略。跨边界流程在图的右下方是我们如何

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。