1 package org.ddd4j.infrastructure.specification; 2 3 public abstract class AbstractSpecification<T> implements Specification<T> { 4 public Specification<T> and(Specification<T> other) { 5 return new AndSpecification<T>(this, other); 6 } 7 8 public Specification<T> not() { 9 return new NotSpecification<T>(this); 10 } 11 12 public Specification<T> or(Specification<T> other) { 13 return new OrSpecification<T>(this, other); 14 } 15 }