第二周作业
作业一:
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
依赖倒置原则(Dependency Inversion Principle)又叫依赖反转原则,主要内容有:
高层模块(high-level modules)不要依赖低层模块(low-level);
高层模块和低层模块应该通过抽象(abstractions)来互相依赖;
高层模块和低层模块应该通过抽象(abstractions)来互相依赖;
简单分析一下,高层模块依赖底层模块的话,稳定性和扩展性没有办法保证,一旦底层模块有改动,高层模块也不得不进行改动;正确的做法是高层对需要的功能进行抽象,底层模块去实现抽象,这个抽象是相对稳固的,即使以后底层模块有调整,只要抽象不变,就不会影响到高层模块。重点是一定要高层模块来根自己的功能特性来进行抽象,才来做到高层模块不依赖于底层的模块。
好莱坞原则主要用于框架设计中,内容是:Don't call me, I will call you。理解为:应用程序不需要调用框架,只需要实现框架定义的抽象,框架在运行中就会主动调用应用程序。这个与依赖倒置原则中“高层模块(high-level modules)不要依赖低层模块(low-level)”是一致的。
作业二:
请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
web容器与web应用程序,web容器与我们开发web应用程序没有直接的依赖关系,都是依赖于servlet规范这个抽象;只要我的应用程序实现了servlet,web容器(tomcat)在启动后会主动加载我们写的应用程序。
作业三:
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
CacheOprationInterface暴露给应用程序的,CacheConfigInterface暴露给系统。
设计模式之美
评论