经验:一定要写才能学得会。
先写测试。(《极限编程》)
以BBS论坛为例:
import com.linux_lihuafeng.dp.filter.MsgProcessor;
public class Main {
public static void main(String []args){
String msg = "大家好:),<script>,敏感词,被就业,看不见大家 "; 1
MsgProcessor mp = new MsgProcessor(); 6
mp.setMsg(msg); 7
String result = mp.process(); 8
System.out.println(result); 9
}
}
package com.bjsxt.dp.filter;
public class MsgProcessor {
private String msg; 3
public String getMsg() { 4
return msg;
}
public void setMsg(String msg) { 5
this.msg = msg;
}
public String process(){ 2
//process <> 10
String result = msg.replace('<', '[').replace('>', ']'); 11
//process A
//process B
//process C 很麻烦,需要想一种办法将这个过程封装起来
return result;
}
}
写的顺序:
很麻烦,需要想一种方法将这个过程封装起来
package com.bjsxt.dp.filter;
public interface Filter {
//定义一系列规则来实现接口,接口的实现可以将字符串做任意的处理,反馈出一个新的字符串
String doFilter(String str);
}
public String doFilter(String str) {
// TODO Auto-generated method stub
//process <>
String result = str.replaceAll("<", "[");
result = result.replace(">", "]");
return result;
}
public String getMsg() {
return msg;
}
this.msg = msg;
}
String result = new HTMLFilter().doFilter(msg);
//process <>
// String result = msg.replaceAll("<", "[");
// result = result.replace(">", "]");
// //process the sensitive words
// String []sen = {"被就业","搞基","敏感"};
for(int i = 0 ; i < sen.length ; i++){
result = result.replaceAll(sen[i], "就业");
}
// result = result.replace("被就业", "就业");
return result;
}
}
public String doFilter(String str) {
String result = str ;
String []sen = {"被就业","搞基","敏感"};
for(int i = 0 ; i < sen.length ; i++){
result = result.replaceAll(sen[i], "就业");
}
return result;
}
public String getMsg() {
return msg;
}
this.msg = msg;
}
String result = new HTMLFilter().doFilter(msg);
result = new SensitiveFilter().doFilter(msg);
//process <>
// String result = msg.replaceAll("<", "[");
// result = result.replace(">", "]");
// //process the sensitive words
// String []sen = {"被就业","搞基","敏感"};
// for(int i = 0 ; i < sen.length ; i++){
// result = result.replaceAll(sen[i], "就业");
//
// }
// result = result.replace("被就业", "就业");
return result;
}
}
private Filter []filters = {new HTMLFilter() , new SensitiveFilter()};
public String getMsg() {
return msg;
}
this.msg = msg;
}
// String result = new HTMLFilter().doFilter(msg);
// result = new SensitiveFilter().doFilter(msg);
for(int i = 0 ; i < filters.length ; i++){
result = filters[i].doFilter(result);
}
// result = f.doFilter(result);
// }
import java.util.List;
public FilterChain addFilter(Filter filter) {
this.filters.add(filter);
}
public String doFilter(String str) {
String result = str ;
for(Filter f:filters){
result = f.doFilter(str);
}
return result ;
}
}
public class Main {
String msg = "大家好:),<script>,敏感,被就业,网络授课没感觉,因为看不见大家 ";
MsgProcessor mp = new MsgProcessor();
mp.setMsg(msg);
FilterChain fc = new FilterChain();
//
fc.addFilter(new HTMLFilter()).addFilter(new SensitiveFilter());
mp.setFc(fc);
String result = mp.process();
System.out.println(result);
}
}
private FilterChain fc ;
// private Filter []filters = {new HTMLFilter() , new SensitiveFilter()};
public String getMsg() {
return msg;
}
return fc;
}
public void setFc(FilterChain fc) {
this.fc = fc;
}
public void setMsg(String msg) {
this.msg = msg;
}
// String result = new HTMLFilter().doFilter(msg);
// result = new SensitiveFilter().doFilter(msg);
// for(int i = 0 ; i < filters.length ; i++){
// System.out.println();
// result = filters[i].doFilter(result);
// }
// for(Filter f:filters){
// result = f.doFilter(msg);
// }
return fc.doFilter(msg);
}
}
void doFilter(Request request, Response response);
}
import java.util.List;
this.filters.add(filter);
return this ;
}
public String doFilter(String str) {
String result = str ;
return result ;
}
@Override
public void doFilter(Request request, Response response) {
for(Filter f:filters){
f.doFilter(request,response);
}
}
}
@Override
public void doFilter(Request request, Response response) {
request.requestStr = request.requestStr.replaceAll("<", "[").replaceAll(">","]");
}
@Override
public void doFilter(Request request, Response response) {
// TODO Auto-generated method stub
String []sen = {"被就业","搞基","敏感"};
for(int i = 0 ; i < sen.length ; i++){
request.requestStr = request.requestStr.replaceAll(sen[i], "就业");
}
}
public class Main {
String msg = "大家好:),<script>,敏感,被就业,网络授课没感觉,因为看不见大家 ";
// MsgProcessor mp = new MsgProcessor();
// mp.setMsg(msg);
Request request = new Request();
request.setRequestStr(msg);
Response response = new Response();
response.setResponseStr("response");
FilterChain fc = new FilterChain();
//
// fc.addFilter(new HTMLFilter()).addFilter(new SensitiveFilter());
fc.addFilter(new HTMLFilter()).addFilter(new SensitiveFilter());
// mp.setFc(fc);
//
// String result = mp.process();
System.out.println(request.getRequestStr());
System.out.println(response.getResponseStr());
}
}
void doFilter(Request request, Response response, FilterChain chain);
}
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.requestStr = request.requestStr.replaceAll("<", "[").replaceAll(">","]")+"---HTMLFilter() --requrst";
chain.doFilter(request, response, chain);
response.responseStr = response.responseStr += "---HTMLFilter() ---response";
}
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.requestStr = request.requestStr.replaceAll("<", "[").replaceAll(">","]")+"---HTMLFilter() --requrst";
chain.doFilter(request, response, chain);
response.responseStr = response.responseStr += "---HTMLFilter() ---response";
}