领取优惠卷需要判断很多条件。可以使用责任链模式吗,或者有其他什么设计模式更合适吗
组合模式应该也可以,示例代码如下。
public interface Condition {
boolean match();
}
public class ConditionA implements Condition{
@Override
public boolean match() {
return false;
}
}
public class ConditionB implements Condition{
@Override
public boolean match() {
return false;
}
}
public class ConditionComposite implements Condition {
private List<Condition> conditions = new ArrayList<>();
public ConditionComposite(){
}
public ConditionComposite(List<Condition> conditions) {
if (conditions != null) {
this.conditions.addAll(conditions);
}
}
public boolean addCondition(Condition condition) {
return this.conditions.add(condition);
}
@Override
public boolean match() {
for (Condition condition : this.conditions) {
if (!condition.match()) {
return false;
}
}
return true;
}
}
public class Test {
public static void main(String[] args) {
ConditionComposite conditionComposite = new ConditionComposite();
conditionComposite.addCondition(new ConditionA());
conditionComposite.addCondition(new ConditionB());
System.out.println("是否可以领取优惠券:" + conditionComposite.match());
}
}