В настоящее время я использую что-то вроде:
public void List<Product> filter(List<Product> products, User user)
{
List<Product> filteredProduct = new ArrayList<Product>();
for(Product product : products)
{
if( filterA(Product product, User user) ||
filterB(Product product, User user) ||
filterC(Product product, User user) )
{
filteredProduct.Add(product);
}
}
return filteredProduct;
}
public static bool filterA(Product product, User user)
{
return product.isOpen();
}
public static bool filterB(Product product, User user)
{
return product.fieldA().equals("XX") && user.getDesk().equals( product.getDesk());
}
public static bool filterC(Product product, User user)
{
return product.fieldA().equals("YY") &&
user.scopes().contains(product.getScope())
...;
}
Все фильтры жестко закодированы. Когда мне нужно добавить фильтр, я должен разработать и поставить новую версию на производстве. Вы знаете какой-нибудь java бесплатный фреймворк или я должен разработать свой собственный фреймворк?
Большое спасибо