public IEnumerable <Product> Filter(IEnumerable <Product> items, ISpeficiation <Product> spec) { foreach (var p in items) { if (spec.IsSatisfied(p)) { yield return(p); } } }
public bool IsSatisfied(Product item) { return(filter1.IsSatisfied(item) && filter2.IsSatisfied(item)); }