写点什么

架构师训练营第二周作业

用户头像
李日盛
关注
发布于: 2020 年 10 月 30 日
架构师训练营第二周作业

解析依赖倒置



要理解所谓依赖倒置,得从程序启动流程说起。我们知道,一般的编译型程序都是有个main方法,这里就是整个程序运行的入口。但是在java的现代开发中,我们不用写main方法,我们的程序却是能正常运行起来,这是为何?答案就是,main方法在别的地方,被别人写了。具体到java web应用里面,就是main方法是在tomcat,jetty这类容器里面。容器负责启动进程,然后接收http请求,解析,封装为一个个request对象。但是容器并不知道要怎么处理这个request对象,这个时候,就是你写的代码需要登场了。容器在一个地方给你的代码预留了执行的位置,这个位置通常就是一个接口定义。你写了接口的具体实现类,容器然后根据配置文件或者注解,new了一个实例,注入到容器本身的运行逻辑里面。等你的代码执行完了,容器就拿到一个结果,然后再封装成一个response对象,返回给客户端。



从上面的分析我们可以回顾课程里面,所谓高层模块是什么意思。所谓高层模块,即数据处理的上游。上游控制数据的进入和流出,低层模块则负责数据的具体处理过程,通常也就是业务代码。对于一个程序来说,不同的代码之间,负责的职责是不一样的。从单一职责的角度来说,不同代码其实不知道各自具体实现类是啥,也不需要知道。只要大家约定好接口,满足里氏替换,我就只依赖接口即可,具体的实现类实例,在某个地方注入即可。根据开闭原则,如果需要外部代码加入到模块本身的执行流程里面,那就对外预留好接口--也就是所谓依赖倒置。如果还是不好理解,不妨想想U盘和电脑的关系。U盘依赖电脑读取文件,USB接口其实是在电脑上面。



cache类接口设计优化



从组合和继承两方面来考虑,我这边的设计如下:





发布于: 2020 年 10 月 30 日阅读数: 45
用户头像

李日盛

关注

好架构=低成本+可实现 2018.01.22 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
赞依赖倒置的解释~
2020 年 11 月 08 日 16:44
回复
没有更多了
架构师训练营第二周作业