用户登录 ——校验——判断用户名密码——判断权限
package com.example.demo.designPattern.chainmode.builderchain;
import lombok.Data;
/**
* @program: People
* @description: 登录类
* @author: liu wei ping
* @create: 2022-04-17 12:02
*/
@Data
public class Member {
private String loginName;
private String loginPass;
private String roleName;
public Member(String loginName, String loginPass) {
this.loginName = loginName;
this.loginPass = loginPass;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getLoginPass() {
return loginPass;
}
public void setLoginPass(String loginPass) {
this.loginPass = loginPass;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public Member(String loginName) {
this.loginName = loginName;
}
@Override
public String toString() {
return "Member{" +
"loginName='" + loginName + '\'' +
", loginPass='" + loginPass + '\'' +
", roleName='" + roleName + '\'' +
'}';
}
}
package com.example.demo.designPattern.chainmode.builderchain;
/**
* @program: People
* @description: 责任链 链管理
* @author: liu wei ping
* @create: 2022-04-17 11:59
*/
public abstract class Handler<T> {
protected Handler next;
public void next(Handler next) {
this.next = next;
}
public abstract void doHandler(Member member);
//建造者模式
public static class Builder<T>{
private Handler<T> head;
private Handler<T> tail;
public Builder<T> addHandler(Handler handler) {
if (this.head == null ) {
this.head = this.tail = handler;
return this;
}
this.tail.next(handler);
this.tail = handler;
return this;
}
public Handler<T> build(){return this.head;};
}
}
package com.example.demo.designPattern.chainmode.builderchain;
import org.apache.commons.lang3.StringUtils;
/**
* @program: People
* @description: 校验处理类
* @author: liu wei ping
* @create: 2022-04-17 12:00
*/
public class ValidateHandler extends Handler{
@Override
public void doHandler(Member member) {
if (StringUtils.isEmpty(member.getLoginName()) ||
StringUtils.isEmpty(member.getLoginPass())) {
System.out.println("用户名和密码为空");
return;
}
System.out.println("用户名和密码不为空,可以往下执行");
if(null != next) {
next.doHandler(member);
}
}
}
package com.example.demo.designPattern.chainmode.builderchain;
/**
* @program: People
* @description: 登录处理类
* @author: liu wei ping
* @create: 2022-04-17 11:59
*/
public class LoginHandler extends Handler{
@Override
public void doHandler(Member member) {
System.out.println("登录成功!");
member.setRoleName("管理员");
if (null !=next) {
next.doHandler(member);
}
}
}
package com.example.demo.designPattern.chainmode.builderchain;
/**
* @program: People
* @description: 权限处理类
* @author: liu wei ping
* @create: 2022-04-17 11:59
*/
public class AuthHandler extends Handler{
@Override
public void doHandler(Member member) {
if (!"管理员".equals(member.getRoleName())) {
System.out.println("您不是管理员,没有操作权限");
return;
}
System.out.println("允许操作");
}
}
package com.example.demo.designPattern.chainmode.builderchain;
/**
* @program: People
* @description: 业务登录类
* @author: liu wei ping
* @create: 2022-04-17 11:59
*/
public class MemberService {
public void login(String loginName,String loginPass) {
Handler.Builder builder = new Handler.Builder<>();
//登录过程 先校验 -- 再判断用户名密码 -- 再判断角色
builder.addHandler(new ValidateHandler())
.addHandler(new LoginHandler())
.addHandler(new AuthHandler());
builder.build().doHandler(new Member(loginName,loginPass));
}
}
package com.example.demo.designPattern.chainmode.builderchain;
/**
* @program: People
* @description: 责任链模式和建造者模式测试类 -- 用户登录
* @author: liu wei ping
* @create: 2022-04-17 12:00
*/
public class Test {
public static void main(String[] args) {
MemberService memberService = new MemberService();
memberService.login("lwp","999");
}
}
测试结果如下所示: