责任链模式也叫职责链模式,按照职责来设计对象,最终形成链式调用,在使用该模式时应注意链不要太长,以免影响性能。
package com.depthmind.designpattern;
public class ChainOfResponsibilityPattern {
public static void main(String[] args) {
Approve groupLeaderApprove = new GroupLeaderApprove();
Approve managerApprove = new ManagerApprove();
Approve presidentApprove = new PresidentApprove();
groupLeaderApprove.setApprove(managerApprove);
managerApprove.setApprove(presidentApprove);
groupLeaderApprove.approve(1000);
groupLeaderApprove.approve(100000);
groupLeaderApprove.approve(1000000);
}
}
abstract class Approve {
Approve approve;
public void setApprove(Approve approve) {
this.approve = approve;
}
abstract void approve(float price);
}
class GroupLeaderApprove extends Approve {
@Override
void approve(float price) {
if (price <= 5000) {
System.out.println("Group Leader Approved!");
} else {
approve.approve(price);
}
}
}
class ManagerApprove extends Approve {
@Override
void approve(float price) {
if (price > 5000 && price <= 10000) {
System.out.println("Manager Approved!");
} else {
approve.approve(price);
}
}
}
class PresidentApprove extends Approve {
@Override
void approve(float price) {
if (price > 10000) {
System.out.println("President Approved!");
} else {
return;
}
}
}