写点什么

训练营第二周作业

用户头像
Mr冰凉
关注
发布于: 2020 年 06 月 17 日
训练营第二周作业



作业一:

  • 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

依赖倒置原则:

1.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。

2.抽象不应该依赖于具体,具体应该依赖于抽象。





总之就是针对抽象接口或者抽象类编程,而不是具体实现。



为什么有时候依赖倒置原则又被称为好莱坞原则?

我理解书上的意思是:遵循依赖倒置原则使代码依赖高层接口和抽象,并由高层定义了接口,改变了依赖关系和接口所有权,所以符合“好莱坞原则”



我个人认为,"don’t call us, we’ll call you."强调的是改变以前使用 new 来静态组装对象的思想,而在运行时建立对象间的关系,提升代码扩展性。DIP强调的是通过对高层抽象的依赖,屏蔽具体实现之间的差异,从而使代码更稳定更容易扩展。DIP是“好莱坞”的基础,这俩没有可比性,所以问题不成立...还望助教老师斧正



作业二:

  • 请描述一个你熟悉的框架,是如何实现依赖倒置原则的。

如果只是依赖倒置的话,随处可见,比如 平时使用的jdbc,我们调用的是高层的jdbc抽象接口定义,而不会依赖具体的数据库driver实现。



如果说“好莱坞原则”的话:那么spring使用IoC思想,在运行时动态向bean中设置接口实例的做法算是一种实现;另外,dubbo使用ServiceLocator动态加载SPI实现类的方式也是在实现好莱坞原则。

作业三:

请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。

按照体面意思,如果只是为了分离职责的话,两个接口。限定CacheHandler的作用域,基本可以避免被非法调用。



或者把维护Cache的功能从实现类中抽离到其它接口中,比如DefCacheManager



参考文章

用户头像

Mr冰凉

关注

还未添加个人签名 2017.12.17 加入

还未添加个人简介

评论

发布
暂无评论
训练营第二周作业