架构师训练营第二周作业
1、请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
依赖倒置原则:A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
这个原则的主要目的应该是解决架构设计中,分层高耦合的问题,举例,controller层是调用方(高层模块),service层是被调用方用于实现具体的业务逻辑(低层模块)。如果controller层直接依赖service层的接口,因业务需求的变更导致的service层变更会影响到controller层,耦合度高。可以通过在controller层抽象一个接口,service层去实现controller层的抽象,达到解耦的目的。类似于DDD中的防腐层。
好莱坞原则:don't call us, we'll call you,别打电话给我们,有事我会打电话给你。
好莱坞原则是用在系统的高层组件与底层组件之间。高层组件不应该直接调用低层组件,而是从容器获取。
有时候依赖倒置原则又被称为好莱坞原则,本质思想都是高层不应直接依赖低层。
2、请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
spring提供了ioc容器,在配置或注解中声明springBean,由springbean容器实例化这些bean对象,在调用方声明一个抽象接口,由容器根据类型或者名称注入bean对象,当业务发生变化时,只需要在配置中修改依赖即可达到变更具体实现的目的。
3、请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
作业三提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
评论