struts2的设计模式

传统的基于servlet的开发模式。servlet对象是否线程安全?
web容器默认采用单servlet实例多线程的方式处理http请求。所有servlet不是线程安全的。
1、ThreadLocal模式
 原理:多个线程访问同一共享变量时,ThreadLocal类为每个线程提供一份该变量的副本,各个线程拥有一份属于自己的变量副本,操作修改的是各自的变量副本,而不会相互影响。
在两个方向完成数据隔离:
纵向:线程与线程之间的数据访问隔离。
横向:同一个线程中,不同的ThreadLocal实例操作的对象之间相互隔离
ThreadLocal模式最适合的场景?
在不同开发层次中共享数据
ThreadLocal模式的两个主要步骤
1、建立一个类,并在其中封转一个静态的ThreadLocal变量,使其成为共享数据环境。
2、在类中实现访问静态ThreaLocal变量的静态方法。
2、装饰模式
在这里插入图片描述
1、默认目标实现(TargetComponent)类封装于具体实现类(ComponentDecorator)或者其子类内部,从而形成对对象之间的引用关系。
2、具体装饰类(ComponentDecorator)同样实现了原始接口。

3、策略模式
策略模式的目的在于把算法实现与算法使用环境解耦。添加新算法不影响原来对的环境继续使用其代码
在这里插入图片描述
策略模式涉及的主要角色:
环境角色:持有一个策略类的引用,决定具体调用那种策略。
抽象策略角色:这是一个抽象类或接口,是所有策略算法的核心归纳。
具体策略角色:封装具体的策略算法或行为。
4、建造者模式
在这里插入图片描述
建造者模式涉及4个角色:
客户端:调用具体的构造器完成对象创建
抽象构造器角色:包含一组接口方法(有一个builder方法,和若干辅助方法)
具体构造器角色:具体构造器实现
产品角色:整个构造模式的产物。
责任链模式
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章