美文网首页android架构技术干货
洞悉本质 | 论软件设计中间加一层的威力

洞悉本质 | 论软件设计中间加一层的威力

作者: 风象南 | 来源:发表于2019-12-30 09:21 被阅读0次

    为什么写这个主题?

    软件设计中间加一层的解决方案,随处可见。写本文的目的也是因为看到很多场景都是基于这个思想的应用,就想着梳理一下,让大家看到一些本质的内容。

    顺便以现今主流的一些技术或概念作为样本,进行拆解,辅助大家理解。

    搞清底层逻辑和设计思想,才不会被各种技术名词,技术概念整的一脸懵逼。

    现在铺天盖地的三高讲解、培训,千万悠着点学,别整的身体三高了,哈哈,开个玩笑。

    但是软件的设计思想层面的东西,编程的一些思考,我们也需学习提升,思考沉淀。学技术不只有三高。

    而且思维层面的东西不像学习个具体的技术框架,全身心投入个几天甚至几个小时就能上手使用了。而是需要一点一滴积累,一点一滴思考总结。

    看别人的总结也不行,别人的永远是别人的,参考可以,一定要自己总结。

    回归主题,今天分享的是「论软件设计中间加一层的威力」 。

    正文开始

    你熟悉的jvm

    先看个jvm得简易执行图。

    在这里插入图片描述

    以上仅仅列举了部分内容,没提到的就只能留给读者自行发觉领悟喽。

    总结

    结合上面的实例拆解,总结下,中间加一层的设计来说大概可以解决以下场景的问题。

    这里特别强调下加一层是个设计思想,不光可以解决技术问题,工作中日常生活中也可以用到,所以关键的关键是需要吸收这种设计思想。


    再回到技术场景下来说不同场景的处理方式会不一样,不一定是非要引入一个技术组件这样,比如某些特定场景下,加个字段,加个类都可以实现。一定要活学活用。

    解藕

    解耦的目的是为了后续可扩展,可维护,提升软件的可修改性,保证各自的独立进化。

    聚合

    为了简化上层调用和方便获取结果,添加一个聚合中间层,这里还是带一点解藕和隐藏细节的作用,虽说不是聚合的重点,但确有此功效。

    统一处理

    典型场景如上面提到的网关的应用场景和作用,如鉴权中心,日志记录等都可以在网关层统一去做。

    隐藏细节

    系统有没有自己的一些小秘密不想让外界知道,有怎么办 ?加上一个对外的调用层,隐藏真实服务地址,改变方法名,改变参数你想做的通通可以做到。

    屏蔽差异

    上面没提到的对应的场景,其实拿设计模式中的适配器来说这个比较合适,一个典型的场景是一个两插的插头如何接入到一个三口的插座上。中间加个转换头就可以做到。通过转接头间接屏蔽了接口间的差异。

    对应到系统中也是如此,一个接口输出的是xml,而另一个接收方需要的是json,两方都不能改动情况下,怎么做,那就是加个中间转换层。屏蔽数据报文的差异。

    最后

    好的设计其实一定程度上可以避免一些技术问题,简化问题场景,而这需要我们不断摸索、不断尝试、不断学习、不断总结。

    觉得还行,动动手指留个赞。

    以上就是今天的内容,我们下期见。

    更多优质内容,首发公众号【风象南】,欢迎关注。


    在这里插入图片描述

    相关文章

      网友评论

        本文标题:洞悉本质 | 论软件设计中间加一层的威力

        本文链接:https://www.haomeiwen.com/subject/jcepoctx.html