领先28 > 什么是分层架构的依据与原则?本文告诉你答案!

什么是分层架构的依据与原则?本文告诉你答案!

2018-10-02
分享到:
【导读】《什么是分层架构的依据与原则?本文告诉你答案!》,欢迎阅读。

什么是分层架构的依据与原则?本文告诉你答案!

  这是因为,网络直播乃是以流量变现为核心游戏规则,更劲爆的直播内容,意味着更多的观看人数,也就意味着更可观的经济回报。而恰恰是这套简单粗暴的玩法,激励着各色主播们前赴后继地剑走偏锋。    毋庸讳言,网络直播之所以迅速蹿红,很大程度上就是由于,其提供了最直接的感官刺激、迎合了最世俗的审美趣味。此前,不少女主播以其着装暴露、话语撩人而赚得盆满钵满,而今又有各路网红“怪招”频出但求一夜爆红,其背后的逻辑可谓别无二致。诸如“捅马蜂窝”之类的偏激做法,旨在表演一种“挑战禁忌”的实现感。

  从2005年至2008年,每年中秋节都到刘的办公室,各送给刘树彪3万元,共12万元。每年春节期间,其到刘的办公室去,各送给刘3万元现金和6千元购物卡,共12万元现金和万元购物卡。2006年2月刘树彪到欧洲,其到刘的办公室送给刘2万元。2006年11月刘到美国考察,其又去刘的办公室送给刘2万元。

  梦天木门取材自世界各地生长较快、成材较早、轮伐期短的天然速生材。木材干燥、收缩性小,不易发生开裂和变形,耐水,耐腐蚀;在制作环节,梦天十分注重制作的科学性,比如他们会将整材进行切割,然后将木材内部的纤维切断,为的是减少因木材内部应力而产生的干缩、湿胀现象。同时,因为木材的不稳定性,梦天木门往往会花上100多天对木材进行浸泡、蒸煮、烘干等养生工艺,之后才会进行下一道工序。

13寸容易出经典本,大家一起来看看,小编为大家精选的这四款本华硕U303LN4210、联想-I5Y70(D)香槟金、戴尔和宏碁V3-371-57E8有没有你心中的经典。

      经济新常态下,家居业整体增速放缓,人口红利的优势与“薄利多销”的光环也已逐渐褪去,石材行业发展也将面临前所未有的挑战。在供给侧结构性改革的背景下,消费者对高品质家居生活的需求日渐凸显,同时,其对石材制造提出了更高的要求。在这样的背景下,石材行业该如何转变,才能形成新的增长动力呢  传统制造业“光环”逐渐褪去  当前,以“薄利多销”为代表的传统制造业路径正逐渐淡褪光环,曾经的优势变成了劣势,无品牌、雷同性强、附加值低等“后遗症”使传统制造业的步履越来越维艰。在供给侧结构性改革提速的背景下,石材企业应转变经营思想,重点加大对人才、技术、知识、信息、品牌等方面的投入,优化投资项目和产品结构,提升企业经营效率。

    消费者为了求方便,把药方储存在手机中要求中药店配药,这其实会引发连串问题,给业者带来困扰。中药公会吁请公众抓药时,最好用回文本药单。

整个架构模型清晰地表达了领域层别无依赖的特质,但整个架构却容易给人以一种错乱感。 单以这个分层模型来看,虽则没有让高层依赖低层,却又反过来让低层依赖了高层,这仍然是不合理的。 当然你可以说此时的基础设施层已经变成了高层,然而从之前分析的南向网关与北向网关来说,基础设施层存在被肢解的可能。

坦白讲,这个架构模型仍然没有解决人们对分层架构的认知错误,例如它并没有很好地表达依赖倒置原则与依赖注入。 还需要注意的是,这个架构模型将基础设施层放在了整个分层架构的最顶端,导致它依赖了用户界面层,这似乎并不能自圆其说。

我们需要重新梳理领域驱动架构,展示它的演进过程。

层之间的协作在我们固有的认识中,分层架构的依赖都是自顶向下传递的,这也符合大多数人对分层的认知模型。

从抽象层次看,层次越处于下端,就会变得越通用越公共,与具体的业务隔离得越远。 出于重用的考虑,这些通用和公共的功能往往会被单独剥离出来形成平台或框架,在系统边界内的低层,除了面向高层提供足够的实现外,就都成了平台或框架的调用者。

换言之,越是通用的层,越有可能与外部平台或框架形成强依赖。

若依赖的传递方向仍然采用自顶向下,就会导致系统的业务对象也随之依赖于外部平台或框架。 依赖倒置原则(DependencyInversionPrinciple,DIP)提出了对这种自顶向下依赖的挑战,它要求高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 这个原则正本清源,给了我们当头棒喝谁规定在分层架构中,依赖就一定要沿着自顶向下的方向传递?我们常常理解依赖,是因为被依赖方需要为依赖方(调用方)提供功能支撑,这是从功能重用的角度来考虑的。

但我们不能忽略变化对系统产生的影响!与建造房屋一样,我们自然希望分层的模块构建在稳定的模块之上。

谁更稳定?抽象更稳定。 因此,依赖倒置原则隐含的本质是:我们要依赖不变或稳定的元素(类、模块或层)。

也就是该原则的第二句话:抽象不应该依赖于细节,细节应该依赖于抽象。

这一原则实际是面向接口设计原则的体现,即针对接口编程,而不是针对实现编程。

高层模块对低层模块的实现是一无所知的,带来的好处是:低层模块的细节实现可以独立变化,避免变化对高层模块产生污染在编译时,高层模块可以独立于低层模块单独存在对于高层模块而言,低层模块的实现是可替换的倘若高层依赖于低层的抽象,必然会面对一个问题:如何将具体的实现传递给高层的类?由于在高层通过接口隔离了对具体实现的依赖,就意味着这个具体依赖被转移到了外部,究竟使用哪一种具体实现,由外部的调用者来决定。 只有在运行调用者代码时,才将外面的依赖传递给高层的类。 MartinFowler形象地将这种机制称为依赖注入(dependencyinjection)。

为了更好地解除高层对低层的依赖,我们往往需要将依赖倒置原则与依赖注入结合起来。 层之间的协作并不一定是自顶向下的传递通信,也有可能是自底向上通信,例如在CIMS(计算机集成制造系统)中,往往会由低层的设备监测系统监测(侦听)设备状态的变化。

当状态发生变化时,需要将变化的状态通知到上层的业务系统。

如果说自顶向下的消息传递往往被描述为请求(或调用),则自底向上的消息传递则往往被形象地称之为通知。

倘若我们颠倒一下方向,自然也可以视为这是上层对下层的观察,故而可以运用观察者模式(ObserverPattern),在上层定义Observer接口,并提供update()方法供下层在感知状态发生变更时调用。 或者,我们也可以认为这是一种回调机制。 虽然本质上这并非回调,但设计原理是一样的。

如果采用了观察者模式,则与前面讲述的依赖倒置原则有差相仿佛之意,因为下层为了通知上层,需要调用上层提供的Observer接口。

如此看来,无论是上层对下层的请求(或调用),抑或下层对上层的通知,都颠覆了我们固有思维中那种高层依赖低层的理解。 现在,我们对分层架构有了更清醒的认识。

我们必须要打破那种谈分层架构必为经典三层架构又或领域驱动设计推荐的四层架构这种固有思维,而是将分层视为关注点分离的水平抽象层次的体现。 既然如此,架构的抽象层数就不是固定的,甚至每一层的名称也未必遵循固有(经典)的分层架构要求。

设计系统的层需得结合该系统的具体业务场景而定。 当然,我们也要认识到层次多少的利弊:过多的层会引入太多的间接而增加不必要的开支,层太少又可能导致关注点不够分离,导致系统的结构不合理。

我们还需要正视架构中各层之间的协作关系,打破高层依赖低层的固有思维,从解除耦合(或降低耦合)的角度探索层之间可能的协作关系。

另外,我们还需要确定分层的架构原则(或约束),例如是否允许跨层调用,即每一层都可以使用比它低的所有层的服务,而不仅仅是相邻低层。

这就是所谓的松散分层系统(RelaxedLayeredSystem)。 该怎么演进领域驱动架构?我们在上文中回顾了经典三层架构与领域驱动设计四层架构,然而任何技术结论都并非句点,而仅仅代表了满足当时技术背景的一种判断,技术总是在演进,领域驱动架构亦是如此。

与其关心结果,不如将眼睛投往这个演进的过程,或许风景会更加动人。 根据依赖倒置原则与RobertMartin提出的整洁架构思想,我们推翻了EricEvans在《领域驱动设计》书中提出的分层架构。 VaughnVernon在《实现领域驱动设计》一书中给出了改良版的分层架构,他将基础设施层奇怪地放在了整个架构的最上面:。

领先28 收藏我

编辑:admin

所属机构:领先28股份有限公司

文章编号:16282158 验证

Copyright ? 2018 news.shoujitianxia.com Inc. All Rights Reserved

Copyright 2008-2018 领先28 版权所有