一、观察者设计模式
定义:观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应
观察者:发布消息通知订阅者内容有更新 、撤销订阅者
订阅者:订阅观察者当收到观察者发布的消息后,用相应的方法进行更新。
实现:关键是要建立一个二元数组topics[]里面放观察者对象(用于遍历数组发布消息),然后得到这个对象后再添加这个对象的订阅者(用于为数组添加对象)。
例如:我有一个南方日报的 观察者对象,topics["南方日报"],那么南方日报的订阅者有我,那么topics["南方日报"].push({“我”,function(){我知道有更新了}})
二、动态代理设计模式
首先得理解反射机制
1、泛型的反射
例如class A extends B<T>{},获取T
方法:getGenericSuperClass()得到父类的类型,然后用ParameterizedType判断此类是否带泛型,然后用ParameterizedType.getActualTypeArguments()来获取当前类型的泛型数组。
未续待完......
---------------------------------------------------------------------------------------------------------
SpringMvc框架原理
1、HTTP请求--->DispatcheServelet(servlet.xml)--->HandlerMapping--->Controller--->Service--->ModelAndView--->DispatcheServlet--->(JSP,JSTL,HTML,PDF)
2、DispatcheServlet是SpringMvc的核心,本质是HttpServlet,通过在web.xml配置servletMapping来处理request请求,当DistpatcheServlet接收到request时,调用servlet-*.xml来寻找相应的HandlerMapping,然后通过HandlerMapping找到Controller,并找到对应的方法调用Service实现业务逻辑,返回ModelAndView