建造者模式
将类的属性模块化,从而方便创建一个复杂的对象。
class Student {
private int id;
private String name;
private int age;
public Student(Builder builder) {
this.id = builder.id;
this.name = builder.name;
this.age = builder.age;
}
public static class Builder {
//给属性初始化默认一些值
private int id = 0;
private String name = "default";
private int age = 0;
public Builder setID(int id) {
this.id = id;
return this;
}
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
//返回调用对象
public Student build() {
return new Student(this);
}
}
}
public static void main(String[] args) {
//静态内部类的形式
Student stu = new Student.Builder()
.setID(0)
.setName("Demo")
.setAge(18)
.build();
}
责任链模式
可以将责任链设计模式想象成链条,链条的每个节点都是首尾相连的结构,每个节点都可以拆开再连接,是非常灵活的结构。
可以将每个节点看做一个对象,每个对象都有不同的处理逻辑,一个请求从链条的头部开始,沿着链条的方向,经过每一个节点,直到有一个节点处理或者传递到最后。
如公司的报销审批流程,每个部门就相当于每个节点,开放不同的权限,一个节点处理不了就传至下一个节点。
//处理者
abstract class Handler {
//下一个处理者
private Handler handler;
//设置下一个处理者
public void setHandler(Handler handler) {
this.handler = handler;
}
public void handlerRequest(int money) {
if (money <= limit()) {
//如果报销的钱 <= 限制 则自己处理
handle(money);
} else {
//调用下一个处理者
handler.handlerRequest(money);
}
}
//限制条件
public abstract int limit();
//处理结果
public abstract void handle(int money);
}
class TestOne extends Handler {
@Override
public int limit() {
return 100;
}
@Override
public void handle(int money) {
System.out.println("TestOne处理");
}
}
class TestTwo extends Handler {
@Override
public int limit() {
return 200;
}
@Override
public void handle(int money) {
System.out.println("TestTwo处理");
}
}
public static void main(String[] args) {
TestOne one = new TestOne();
TestTwo two = new TestTwo();
one.setHandler(two);
one.handlerRequest(150);
}