第二周课后作业
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
应答: 回答这个问题先解释下什么叫依赖, 依赖就是 A类中引用了B类, 比如“厨师”要切菜必须使用“菜刀”。 在 chef 类中引用 kinfe 类的kinfe 方法,实现切菜功能。 即 A 想使用B 达到某种目的。
这种简单的实现方式有个弊端: 如果B有改动,就会导致A 也要跟着改动。解决此问题使用依赖倒置原则,高内聚,松耦合。即 A 、B 的实体对象之间不相互依赖, 两者都依赖抽象。 接口或抽象类不依赖于实现类, 实现类依赖接口或抽象类。上面接口改造如下:
另外依赖倒置原则也被称为好莱坞原则: ( don‘t call us, we‘ll call you ) 。 即高层制定接口规范,底层去实现。
请描述一个你熟悉的框架,是如何实现依赖倒置原则的
应答: spring 框架的中IOC 容器, 即对象和对象依赖关系都是由容器来创建和管理。实现方式主要是通过依赖注入 和 依赖查找。
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
作业三提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
应答: 按照接口隔离原则,优化后如下:
评论