您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 2浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式之适配器模式

liaowenxiong 发布时间:2022-05-07 14:19:58 ,浏览量:2

适配器设计模式

将一个对象包装成另外一种类型的对象,意义何在?

举个例子说明下:EL表达式是从PageContext、HttpServletRequestWrapper、HttpServletSessionWrapper、ServletContext 中获取指定属性的值。现在希望如果无法从 PageContext 和 HttpServletRequestWrapper 取到指定属性的值,则去 ValueStack 对象获取,那么怎么办?

可以定义一个包装类 Struts,那么构造包装类对象的时候将 HttpServletSessionWrapper 对象作为参数传入构造器中,将HttpServletSessionWrapper 对象包装在里面。包装类可以去覆盖重写 HttpServletSessionWrapper 的getAttribute 方法,这个方法中可以先去调用 HttpServletSessionWrapper 对象的 getAttribute 方法,如果获取不到想要的结果,则再去 ValueStack 对象中获取。

public class StrutsRequestWrapper extends HttpServletRequestWrapper {
	private HttpServletRequestWrapper request;
	public StrutsRequestWrapper(HttpServletRequestWrapper request) {
		this.request = request;
}

    // 重写getAttribute 方法
	public Object getAttribute(String name){
		Object obj = this.request.getAttribute(name);
		if(obj == null){
		// 如果为空,则再去 ValueStack 对象中查找
}
		
}

}

适用场景:当需要照常访问原来的对象,并且又希望扩展某个方法的功能时可以使用该设计模式

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.1638s