设计模式---责任链模式

责任链模式是WBE中常用的一种模式,他的目的是使多个对象都有机会能够处理请求,避免请求的发送者和接受请求者之间的耦合关系,作用是解耦。

将这些对象串成一个链子,让请求沿着这个链子传递下去直到处理完成,他的实现很简单。

这里我们要讲学习设计模式就和打太极一样、切勿生搬硬套一定要符合设计模式什么的、设计模式只是传达一个思想,在实际应用中能够结合考虑,不一定要在设计中使用设计模式,只要复合软件设计原则的就可以。


设计链模式有两种实现方式

第一种是请求有单独的处理对象完成,如果完成不了那么就传递给下一个处理对象对象,直到完成且必须要完成。

第二种是请求经过每个处理对象,处理对象完成各自能够完成的处理传递给下一个对象。



责任链模式有两个主要角色

1.抽象处理者角色:定义处理请求的接口

2.具体处理这角色:继承抽象处理者角色,实现处理请求接口。


这里给大家提供例子例如web中常用的过滤器

抽象处理角色

/**
 * 
 */
package com.model.chain;

//抽象处理角色
public interface MessagesFilter {
	
	//定义处理请求接口
	public String doFilter(String msg);
	
}

具体抽象角色

/**
 * 
 */
package com.model.chain;

//session过滤
public class SessionFilter implements MessagesFilter {

	private SensitiveFilter sensitive;
	
	
	/* (non-Javadoc)
	 * @see com.model.chain.MessagesFilter#doFilter(java.lang.String)
	 */
	public SensitiveFilter getSensitive() {
		return sensitive;
	}


	public void setSensitive(SensitiveFilter sensitive) {
		this.sensitive = sensitive;
	}


	@Override
	public String doFilter(String msg) {
		System.out.println("这里过滤session");
		//这里做了个死代码、只做个范例
		if(true){
			return "";
		}else{
			return getSensitive().doFilter(msg); 
		}
	}

}

/**
 * 
 */
package com.model.chain;

//敏感词过滤
public class SensitiveFilter implements MessagesFilter {

	/* (non-Javadoc)
	 * @see com.model.chain.MessagesFilter#doFilter(java.lang.String)
	 */
	@Override
	public String doFilter(String msg) {
		System.out.println("这里处理敏感词");
		return "";
	}

}

总结

       责任链的最大好处就是降低了程序的耦合、提高程序的灵活性,但是他也有个缺点、所有的请求都要从链子的开头开始执行,可能会增加消耗,所以没有完美的设计模式,只能通过各种设计思想来设计出最合适的程序。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值