架构师 week2 作业
作业 1:
什么是依赖倒置原则,为什么有时候倒置原则又称为好莱坞原则?
依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,互不影响,实现模块间的松耦合。
好莱坞原则是“不要来找我,我会给你打电话”,这样一个有效防止“坏依赖”的方法。
“坏依赖”是指高层组件和低层组件之间相互依赖,高层组件又与其他边侧组件存在依赖关系,边侧组件与低层组件又有依赖关系,错综复杂的依赖关系让人理不清头绪。
好莱坞原则允许低层组件将自己挂钩到高层组件的算法过程中,什么时候调用,则是按照高层的业务处理逻辑决定,有效避免了系统环状依赖。
因此,从这种角度来说好莱坞原则就是依赖倒置。
作业 2:
描述熟悉框架,实现依赖倒置
网站登录模块就是依赖倒置:
场景:
首先登录页面提供一个带用户名/密码的输入表单,用户填写并提交表单后,服务端程序检查是否有匹配的用户名/密码。
如果用户名/密码不匹配,返回到登录页面,并给出提示。如果用户名/密码匹配,记录用户的成功登录日志,更新用户的最后登录时间和IP地址,然后重定向到后台欢迎页面。
(1)用户在登录页面输入用户名/密码,提交表单到服务器,Spring根据配置调用LoginController控制器来响应登录请求。
(2)LoginController调用UserService#hashMatchUser()方法,根据用户名和密码查询是否存在匹配的用户,UserService内部通过调用持久层的UserDao完成具体的数据库访问操作。
(3)如果不存在匹配的用户,重定向到login.jsp页面,并报告错误,否则到下一步。
(4)LoginController调用UserService#findUserByUserName()方法,加载匹配的User对象并更新用户最近一次的登录时间和登录IP地址。
(5)LoginController调用UserService#loginSuccess()方法,进行登录成功的业务处理,创建一个LoginLog对象,并利用LoginLogDao将其插入数据库中。
(6)重定向到欢迎页面main.jsp,欢迎页面产生响应返回给用户。
作业 3:
用接口隔离原则优化 Cache 类的设计,画出优化后的类图
评论