做房产经纪的那些网站可以进客,韩国做游戏的电影 迅雷下载网站有哪些,东莞阳光网入口,客户管理软件免费版Facade门面Mediator调停者
1、Facade门面图解 2、Mediator调停者 一般是系统内部相互交错#xff0c;比如消息中间件(MQ)就是这种设计模式#xff0c;对各个功能或系统之间进行解耦。 Decorator装饰器
1、问题 2、解决方案 Chain Of Responsibility责任链
一、例子场景 业…Facade门面Mediator调停者
1、Facade门面图解 2、Mediator调停者 一般是系统内部相互交错比如消息中间件(MQ)就是这种设计模式对各个功能或系统之间进行解耦。 Decorator装饰器
1、问题 2、解决方案 Chain Of Responsibility责任链
一、例子场景 业务场景论坛或者博客发表帖子或者评论对敏感词过滤处理。使用责任链的模式进行过滤处理。 二、没有使用设计模式之前
/**
* description: 责任链模式
* author: flygo
* time: 2022/7/18 09:51
*/
public class CorMain {public static void main(String[] args) {Msg msg new Msg();msg.setMsg(大家好:), script 欢迎访问 baidu.com大家都是996);// 处理msgString r msg.getMsg();r r.replace(, [);r r.replace(, ]);msg.setMsg(r);r r.replaceAll(996, 955);msg.setMsg(r);System.out.println(msg);}
}class Msg {String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}Overridepublic String toString() {return Msg{ msg msg \ };}
}二、使用Filter封装处理 把变化的进行封装处理 /*** description: 责任链模式* author: flygo* time: 2022/7/18 09:51*/
public class CorMain {public static void main(String[] args) {Msg msg new Msg();msg.setMsg(大家好:), script 欢迎访问 baidu.com大家都是996);// 处理msgnew HTMLFilter().doFilter(msg);new SensitiveFilter().doFilter(msg);System.out.println(msg);}
}class Msg {String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}Overridepublic String toString() {return Msg{ msg msg \ };}
}interface Filter {void doFilter(Msg m);
}class HTMLFilter implements Filter {Overridepublic void doFilter(Msg m) {String r m.getMsg();r r.replace(, [);r r.replace(, ]);m.setMsg(r);}
}class SensitiveFilter implements Filter {Overridepublic void doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replaceAll(996, 955);m.setMsg(r);}
}三、使用Filter封装的串在一起 核心代码实现 import java.util.ArrayList;
import java.util.List;/*** description: 责任链模式* author: flygo* time: 2022/7/18 09:51*/
public class CorMain {public static void main(String[] args) {Msg msg new Msg();msg.setMsg(大家好:), script 欢迎访问 baidu.com大家都是996);ListFilter filterList new ArrayList();filterList.add(new HTMLFilter());filterList.add(new SensitiveFilter());for (Filter f : filterList) {f.doFilter(msg);}System.out.println(msg);}
}class Msg {String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}Overridepublic String toString() {return Msg{ msg msg \ };}
}interface Filter {void doFilter(Msg m);
}class HTMLFilter implements Filter {Overridepublic void doFilter(Msg m) {String r m.getMsg();r r.replace(, [);r r.replace(, ]);m.setMsg(r);}
}class SensitiveFilter implements Filter {Overridepublic void doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replaceAll(996, 955);m.setMsg(r);}
}四、使用Filter链条串一起 import java.util.ArrayList;
import java.util.List;/*** description: 责任链模式* author: flygo* time: 2022/7/18 09:51*/
public class CorMain {public static void main(String[] args) {Msg msg new Msg();msg.setMsg(大家好:), script 欢迎访问 baidu.com大家都是996);FilterChain filterChain new FilterChain();filterChain.add(new HTMLFilter());filterChain.add(new SensitiveFilter());filterChain.doFilter(msg);System.out.println(msg);}
}class Msg {String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}Overridepublic String toString() {return Msg{ msg msg \ };}
}interface Filter {void doFilter(Msg m);
}class HTMLFilter implements Filter {Overridepublic void doFilter(Msg m) {String r m.getMsg();r r.replace(, [);r r.replace(, ]);m.setMsg(r);}
}class SensitiveFilter implements Filter {Overridepublic void doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replaceAll(996, 955);m.setMsg(r);}
}class FilterChain {ListFilter filterList new ArrayList();public void add(Filter filter) {filterList.add(filter);}public void doFilter(Msg m) {for (Filter f : filterList) {f.doFilter(m);}}
}五、两个链条串一起 import java.util.ArrayList;
import java.util.List;/*** description: 责任链模式* author: flygo* time: 2022/7/18 09:51*/
public class CorMain {public static void main(String[] args) {Msg msg new Msg();msg.setMsg(大家好:), script 欢迎访问 baidu.com大家都是996);FilterChain filterChain1 new FilterChain();filterChain1.add(new HTMLFilter()).add(new SensitiveFilter());FilterChain filterChain2 new FilterChain();filterChain2.add(new FaceFilter()).add(new URLFilter());filterChain1.add(filterChain2);filterChain1.doFilter(msg);System.out.println(msg);}
}class Msg {String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}Overridepublic String toString() {return Msg{ msg msg \ };}
}interface Filter {void doFilter(Msg m);
}class HTMLFilter implements Filter {Overridepublic void doFilter(Msg m) {String r m.getMsg();r r.replace(, [);r r.replace(, ]);m.setMsg(r);}
}class SensitiveFilter implements Filter {Overridepublic void doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replaceAll(996, 955);m.setMsg(r);}
}class FaceFilter implements Filter {Overridepublic void doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replace(:), ^v^);m.setMsg(r);}
}class URLFilter implements Filter {Overridepublic void doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replace(baidu.com, https://www.baidu.com);m.setMsg(r);}
}class FilterChain implements Filter {ListFilter filterList new ArrayList();public FilterChain add(Filter filter) {filterList.add(filter);return this;}Overridepublic void doFilter(Msg m) {for (Filter f : filterList) {f.doFilter(m);}}
}
六、由FilterChain中的某一个Filter决定链条是否继续 import java.util.ArrayList;
import java.util.List;/*** description: 责任链模式* author: flygo* time: 2022/7/18 09:51*/
public class CorMain {public static void main(String[] args) {Msg msg new Msg();msg.setMsg(大家好:), script 欢迎访问 baidu.com大家都是996);FilterChain filterChain1 new FilterChain();filterChain1.add(new HTMLFilter()).add(new SensitiveFilter());FilterChain filterChain2 new FilterChain();filterChain2.add(new FaceFilter()).add(new URLFilter());filterChain1.add(filterChain2);filterChain1.doFilter(msg);System.out.println(msg);}
}class Msg {String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}Overridepublic String toString() {return Msg{ msg msg \ };}
}interface Filter {boolean doFilter(Msg m);
}class HTMLFilter implements Filter {Overridepublic boolean doFilter(Msg m) {String r m.getMsg();r r.replace(, [);r r.replace(, ]);m.setMsg(r);return true;}
}class SensitiveFilter implements Filter {Overridepublic boolean doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replaceAll(996, 955);m.setMsg(r);return false;}
}class FaceFilter implements Filter {Overridepublic boolean doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replace(:), ^v^);m.setMsg(r);return true;}
}class URLFilter implements Filter {Overridepublic boolean doFilter(Msg m) {// 处理msgString r m.getMsg();r r.replace(baidu.com, https://www.baidu.com);m.setMsg(r);return true;}
}class FilterChain implements Filter {ListFilter filterList new ArrayList();public FilterChain add(Filter filter) {filterList.add(filter);return this;}Overridepublic boolean doFilter(Msg m) {for (Filter f : filterList) {if (!f.doFilter(m)) {return false;}}return false;}
}七、模拟Java中的ServletFilter 和FilterChain实现 import java.util.ArrayList;
import java.util.List;/*** description: 责任链模式* author: flygo* time: 2022/7/18 09:51*/
public class ServletMain {public static void main(String[] args) {Request request new Request();request.str 大家好:), script 欢迎访问 baidu.com大家都是996;Response response new Response();response.str response;FilterChain filterChain new FilterChain();filterChain.add(new HTMLFilter()).add(new SensitiveFilter());filterChain.doFilter(request, response);System.out.println(request.str);System.out.println(response.str);}
}class Request {String str;
}class Response {String str;
}interface Filter {boolean doFilter(Request request, Response response, FilterChain chain);
}class HTMLFilter implements Filter {Overridepublic boolean doFilter(Request request, Response response, FilterChain chain) {request.str request.str.replaceAll(, [).replaceAll(, ]) ----HTMLFilter;chain.doFilter(request, response);response.str ----HTMLFilter;return true;}
}class SensitiveFilter implements Filter {Overridepublic boolean doFilter(Request request, Response response, FilterChain chain) {request.str request.str.replaceAll(996, 955) ----SensitiveFilter;chain.doFilter(request, response);response.str ----SensitiveFilter;return true;}
}class FilterChain {ListFilter filterList new ArrayList();int index 0;public FilterChain add(Filter filter) {filterList.add(filter);return this;}public boolean doFilter(Request request, Response response) {if (filterList.size() index) {return false;}Filter f filterList.get(index);index;return f.doFilter(request, response, this);}
}八、源码地址
GitHub - jxaufang168/Design-Patterns: 设计模式学习设计模式学习. Contribute to jxaufang168/Design-Patterns development by creating an account on GitHub.https://github.com/jxaufang168/Design-Patterns