设计模式——责任链(ChainOfResponsibility)学习笔记
来源:互联网 发布:淘宝买恒压阀被警察抓 编辑:程序博客网 时间:2024/06/03 15:24
经验:一定要写才能学得会。
先写测试。(《极限编程》)
以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";
}
- 设计模式——责任链(ChainOfResponsibility)学习笔记
- 设计模式--责任链模式ChainOfResponsibility(行为型)
- [设计模式]ChainOfResponsibility责任链模式
- 责任链模式----ChainOfResponsibility
- ChainOfResponsibility--责任链模式
- 责任链模式(ChainOfResponsibility )
- 17、责任链模式(ChainofResponsibility)
- 设计模式之ChainOfResponsibility模式(学习笔记)
- 设计模式之责任链模式(ChainOfResponsibility)&正反顺逆链处理
- 设计模式学习笔记——责任链模式
- 设计模式学习笔记——责任链模式
- 设计模式学习笔记——责任链模式
- 理解J2EE中的filter,interceptor 之 责任链设计模式(ChainOfResponsibility)
- 【设计模式】—— 职责链模式ChainOfResponsibility
- 设计模式学习笔记--责任链模式
- 设计模式学习笔记——责任链(Chain of Responsibility)模式
- 学习笔记——JAVA设计模式<12>责任链模式
- JAVA设计模式学习20——责任链模式
- 杭电4548 好长的筛选素数,打表,细节特别要注意l代表后面的大的那个数
- 三个方法让你成为更好的程序员
- hdu 2005第几天 函数 20140725.cpp
- hdu 2006 奇数乘积
- 单硬盘上mac + win7双系统,GUID-GPT分区
- 设计模式——责任链(ChainOfResponsibility)学习笔记
- 14072500837-hd-素数判定.cpp
- 关于内表更新方式的速度问题
- oc 内存分配管理笔记
- 可重复性分析week3
- 水处理过滤器:机械过滤器主要技术参数
- SSM框架——以注解形式实现事务管理
- Android APK反编译详解(附图
- NHibernate学习之一——如何配置NHibernate