第二周作业
作业一: 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则
依赖倒置原则是说高层模块不应该依赖低层模块;相反,它们都应该依赖抽象或接口。这意味着你不应该在高层某块里依赖具体的低层实现类,因为这样会让高层某块紧耦合低层模块;如果某天修改低层某块,很可能导致高层模块奔溃。当然课程里说了一点我很少注意的,接口应该被高层定义,而不是低层,由高层来说我需要什么,然后低层提供,而不是低层提供什么,我来使用什么。
好莱坞原则是用在系统的高层组件与底层组件之间。高层组件不应该直接调用底层组件,而是从容器获取。
为什么说有时候依赖倒置原则又被称为好莱坞原则,其实主要原因就是绝大多数框架在实现 依赖倒置 的时候用了好莱坞原则:高层模块不会去 new一个依赖,而是由框架在运行时动态给予,就是所谓的“别打电话给我,有事我会打电话给你”。
特意还去网上搜索了个例子强化下自己当作笔记咯:
假设qq在线聊天,有聊天框和表情选择框,那么,打开聊天框,然后打开表情框,选择表情——这个过程不应该在聊天框的代码里出现(或者说,聊天框不应该参与直接调用表情框),而是应该聊天框告诉qq容器:我要调用A,虽然我不知道那是什么,然后容器提供A(表情框组件)。好处是,假如之后腾讯更新了更好的表情框,然后由容器控制生命周期,而聊天框则不参与。
作业二: 请用接口隔离原则优化 Cache 类的设计,画出优化后的类图
这个感觉老师也提示为了接口分离原则,类不应该被迫依赖它们不使用的方法,接口应该拥有尽可能少的行为,需要精简单一
版权声明: 本文为 InfoQ 作者【CraspLion】的原创文章。
原文链接:【http://xie.infoq.cn/article/41d7145bfbd4fbc120faf4194】。未经作者许可,禁止转载。
评论