week2 homework
作业1
依赖倒置描述的一种思想,A的动作1依赖B,但B换成了C时,A如何继续完成之前的动作1。所以重点就是找出B和C关于动作1的共同点,抽象成D,使得A的动作1从单独依赖B或C,变换依赖D,不管BC或者XY,只要都满足D,那A就可以实现动作1。其中的引出的总结就是:面向接口编程;细节(动作1)依赖抽象(D),但抽象不依赖细节。
好莱坞原则(不要调用我们,让我们调用你),比如A调用B,一般会持有B的完整生命周期,B的控制权在A,但通过依赖倒置的原则调用D,A无需主动获取D,不在实际控制B的生命周期,而是有其他组件自动将B送上门来。
作业2
最典型的例子就是spring框架。通过动态代理和反射技术来实现依赖注入。动态代理分为两种,JDK动态代理,通过newProxyInstance函数获取代理对象,只针对实现了接口的类有效。cglib动态代理,通过Enhancer增强类来更改字节码继承方式生成对象,主要类及方法不要声明层final。都是通过反射的方式实现目标方法的调用。
作业3
接口隔离原则表现为“不需要的不要”,也可以理解为灵活的进行组合。所以cache类的优化设计类图
评论