【设计模式】责任链1-提出问题

本文介绍了一种在BBS系统中对用户发布的信息进行敏感词和脚本代码过滤的方法,并探讨了如何通过改进处理机制来增强系统的灵活性和可扩展性。
比方说我们做了一个BBS系统,每个人都可以在系统里发表自己的言论和信息。我们要对这些信息进行检查,看看有没有敏感要素和一些影响网站速度的脚本语言。如果不检查,网站可能会被监管部门查封。所以,在数据存入数据库的时候,要对数据进行一系列的检查。


我们创建一个Filter的工程,在cn.edu.hpu.responsiblilty包下创建一个名为Main的类:
直接假设你在网上发表一个信息:
package cn.edu.hpu.responsibility;


public class Main {
	public static void main(String[] args) {
		String msg="大家好:),<script>,敏感,和谐,我们要把设计模式学好";
	}
}

我们要把刚刚msg里面的敏感信息和干扰脚本代码过滤掉,再新建一个类。
用来处理信息的类MsgProcessor:
package cn.edu.hpu.responsibility;

public class MsgProcessor {
	private String msg;
	
	public String getMsg() {
		return msg;
	}

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


	public String process(){
		return "";
	}
}
在Main类中这么使用它:
package cn.edu.hpu.responsibility;

public class Main {
	public static void main(String[] args) {
		String msg="大家好:),<script>,偷盗,抢劫,我们要把设计模式学好";
		MsgProcessor mp=new MsgProcessor();
		mp.setMsg(msg);
		String result=mp.process();
		System.out.println(result);
	}
}

这个做法是“先写测试程序,在写实现”(极限编程XP里的一个理念)

下面我们来看当MsgProcessor接受到msg后如何处理:
我们先来处理带尖括号的信息:
package cn.edu.hpu.responsibility;

public class MsgProcessor {
	private String msg;
	
	public String getMsg() {
		return msg;
	}


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


	public String process(){
		//先处理带尖括号的信息
		String r=msg.replace('<', '[')
                    .replace('>', ']');
		return r;
	}
}

Main测试结果:
大家好:),[script],偷盗,抢劫,我们要把设计模式学好


如果我们再把敏感字眼换掉或去掉呢?可以这么做:
public String process(){
		//先处理带尖括号的信息
		String r=msg.replace('<', '[')
                    .replace('>', ']');
		
		//处理敏感字眼
		r=r.replace("偷盗", "和谐")
		   .replace("抢劫", "帮助");
		return r;
	}
测试Main结果:
大家好:),[script],和谐,帮助,我们要把设计模式学好
关于敏感字眼的处理也有了。

接下来我们如果被要求处理各种符号、其它脚本语言等信息,我们要一点一点的往上面
加处理代码,会十分的被动和代码的不易拓展。

我们有没有方法把处理机制给封装起来呢?让我们往里面加一些对字符串的处理逻辑之后,

加的比较方便呢?


思考........


下一篇总结继续:http://blog.youkuaiyun.com/acmman/article/details/44673311

转载请注明出处:http://blog.youkuaiyun.com/acmman/article/details/44673243

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值