package com.cheng.zenofdesignpatterns.extension.newpatterns.specification.userquery;
/**
* 组合规格说明书
*/
public abstract class CompositeSpecification implements IUserSpecification {
// 是否满足条件有实现类实现
public abstract boolean isSatisfiedBy(User user);
// and操作
public IUserSpecification and(IUserSpecification spec) {
return new AndSpecification(this, spec);
}
// not操作
public IUserSpecification not() {
return new NotSpecification(this);
}
// or操作
public IUserSpecification or(IUserSpecification spec) {
return new OrSpecification(this, spec);
}
/**
* 注意
* 父类依赖子类的情景只有在非常明确不会发生变化的场景中存在,它不具备扩展性,
* 是一种固化而不可变化的结构
*/
}