/*
* 责任链(Chain of Responsibility)
*
*
* 多个处理器对象连成一串,请求在这条链上传递,由该处理这个请求的处理器来处理。发出请求的客户端并不知道哪个对象处理请求。
*/
package model;
public class TestChain {
public static void main(String[] args) {
String pass1 = "123456";
String pass2 = "123456";
String personId = "123456789012345678";
String email = "huxz@tarena.com.cn";
register(pass1, pass2, personId, email);
}
public static void register(String pass1, String pass2, String personId,
String email) {
Filter f1 = new PasswordFilter1();
Filter f2 = new PasswordFilter2();
Filter f3 = new PersonIdFilter();
Filter f4 = new EmailFilter();
f1.setNext(f2);
f2.setNext(f3);
f3.setNext(f4);
System.out.println(f1.doFilter(pass1, pass2, personId, email));
}
}
abstract class Filter {
Filter next = null;
public Filter getNext() {
return next;
}
public void setNext(Filter next) {
this.next = next;
}
public String doFilter(String pass1, String pass2, String personId,
String email) {
if (next == null)
return "成功";
else
return next.doFilter(pass1, pass2, personId, email);
}
}
class PasswordFilter1 extends Filter {
public String doFilter(String pass1, String pass2, String personId,
String email) {
if (!(pass1.equals(pass2)))
return "两次密码输入不一致";
else
return super.doFilter(pass1, pass2, personId, email);
}
}
class PasswordFilter2 extends Filter {
public String doFilter(String pass1, String pass2, String personId,
String email) {
if (pass1.length() != 6)
return "密码长度必须为6";
else
return super.doFilter(pass1, pass2, personId, email);
}
}
class PersonIdFilter extends Filter {
public String doFilter(String pass1, String pass2, String personId,
String email) {
if (personId.length() != 15 && personId.length() != 18)
return "身份证号码非法";
else
return super.doFilter(pass1, pass2, personId, email);
}
}
class EmailFilter extends Filter {
public String doFilter(String pass1, String pass2, String personId,
String email) {
int i1 = email.indexOf("@");
int i2 = email.indexOf(".");
if (i1 == -1 || i2 == -1 || i2 - i1 <= 1 || i1 == 0
|| i2 == email.length() - 1)
return "email非法";
else
return super.doFilter(pass1, pass2, personId, email);
}
}
分享到:
相关推荐
设计模式C++学习之责任链模式(Chain of Responsibility)
【Java设计模式】(3)责任链Chain of Responsibility源码
23种设计模式之二十一(行为模式)Chain of Responsibility模式
C#面向对象设计模式 Chain of Responsibility 职责链模式 视频讲座下载
NULL 博文链接:https://stelin.iteye.com/blog/932101
C#面向对象设计模式 (行为型模式) Chain Of Responsibility 职责链模式 视频讲座下载
C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility 职责链模式
NULL 博文链接:https://linkcqu.iteye.com/blog/355806
主要介绍了Java设计模式之责任链模式(Chain of Responsibility模式)介绍,本文讲解了如何使用责任链模式,并给出了4种使用实例,需要的朋友可以参考下
chain-of-responsibility-demo 责任链模式demo
C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) (Level 300)
C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式)
创建模式: ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 在处理用户的...
设计模式参考文档 ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递...
职责链模式 设计模式 Chain of Responsibility 若有问题望指出。
Chain Of Responsibility.rar
设计模式-责任链的演示项目,导入eclipse中可直接运行,编程语言:java 设计模式学习请参考博客 https://www.li-tian.net.cn/archives/2020-01-27-23-01-15