java设计模式之责任链

在 面向对象程式设计里, 责任链模式是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。

下面通过一个小例子来演示该模式。

首先我们先写一段测试程序。main.java  这个例子我们主要的操作是对一条字符串中的字符进行过滤和替换。

package com.flj.main;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	String msg = "大家好!敏感词,<>";
	mainProcessor mp = new mainProcessor();
	mp.setMsg(msg);
	System.out.println(mp.process());
	

	}

}

然后写一个执行操作的程序。

package com.flj.main;

public class mainProcessor {
private String msg;
Filter[] filters = {new  Filter1(),new  Filter2()};
public String getMsg() {
	return msg;
}

public void setMsg(String msg) {
	this.msg = msg;
}

public String process(){
	String r = msg;
	for(Filter f : filters){
		r = f.doFilter(r);
	}
	return r;
}

}

定义一个Filter接口类,里面定义一个doFilter()方法。

package com.flj.main;

public interface Filter {
public String doFilter(String str);
}

定义两个Filter的实现类。

package com.flj.main;

public class Filter1 implements Filter {

	@Override
	public String doFilter(String str) {
		String r = str.replace("<", ":)")
				.replace(">", "^^");
		return r;
	}

}

package com.flj.main;

public class Filter2 implements Filter {

	@Override
	public String doFilter(String str) {
		String r = str.replace("大家好", "各位早上好啊");
		return r;
	}

}

最后执行我们的测试程序,结果如图

 

可以发现字符串“大家好!敏感词,<>”被替换成了“各位早上好啊!敏感词,:)^^”。

那么我们传统的写法是在mainProcessor类的process方法中把Filter1和Filter2的执行代码就写在一堆,如果要继续添加处理就往里面再继续添加代码,但是这样我们可以发现可别不灵活,那么采用上面的责任链编程思想呢,我们如果想要对字符串再进行操作,那么我们只需继续添加一个Filter的实现类,然后在mainProcessor类中让其依次执行即可,这是程序修改起来特别的方便,这就是责任链编程的好处。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值