1.ThreadLocal设计模式:严格意义上说不是一种设计模式,用来解决多线程程序中数据共享问题的一个方案。
web容器中对于同一个servlet对象的多个请求,servlet的service方法将在一个多线程的环境中并行执行,容器采用单实例(单servlet实例)多线程的方式来处理http请求。
2.装饰模式(Decorator ):对象的一种结构模式,能够动态的为一个对象添加一些额外的行为职责。解决过度依赖使用继承来进行对象的功能扩展
HttpServletRequestWrapper和HttpServletResponseWrapper对HttpServletRequest对象和HttpServletResponse对象装饰,在Filter中可以使用继承wrapper的类来修改请求或响应对象。
3.策略模式:针对一组算法货行为特性,将它们抽象到具有共同接口函数的独立抽象类或接口中,从而使得他们可以相互替换。当一个业务场景可能具备多种行为,且多种行为之间可以进行替换时,可讲它们的行为特性的公共部分进行抽象,并最终形成一个统一接口的过程。
Struts2在初始化时需要讲配置形式(xml文件的配置、Properties文件的配置、Annotation的配置)转化为Struts2内置配置对象。这种场景下通过设计一个配置加载的策略接口,应该不同的配置形式设计不同的配置策略实现类。
未完待续。