package pl.com.bottega.ecommerce.sharedkernel.specification;
/**
*
* @author Slawek
*
* @param <T>
*/
public interface Specification<T> {
public boolean isSatisfiedBy(T candidate);
public Specification<T> and(Specification<T> other);
public Specification<T> or(Specification<T> other);
@SuppressWarnings("unchecked")
public Specification<T> conjunction(Specification<T>... others);
public Specification<T> not();
}