The verification interface may look like this:
public interface Validator { public int validate(); }
The filter interface may look like this:
public interface Filter { public String getParameters();
Rules Interface:
public interface Rule { public String getRule(); }
FilterValidator might look like this:
public class FilterValidator implements Validator{ private Filter f; public FilterValidator(Filter f){ this.f = f; } @Override public int validate() {
Creating a factory is better to hide the internal logic of validators.
public class ValidatorFactory { public Validator getRuleValidator(Rule r){ return null; } public Validator getFilterValidator(Filter f){ FilterValidator fv = new FilterValidator(f); return fv; } }
Now the client will refer to this fact as follows:
public class ClientDemo { private class MyFilter implements Filter{ private String filterInput; public MyFilter(String input){ this.filterInput = input; } @Override public String getParameters() { return null; } @Override public int currentLength() { return this.filterInput.length(); } } public void testValidators(){ ValidatorFactory factory = new ValidatorFactory(); Validator v = factory.getFilterValidator(new MyFilter("filter string goes here...")); v.validate(); } } }
Through the Rule, Filter interfaces, you can force the behavior you want from the client. Then the client can get instances from the factory and pass him the instances of the rules / filters for verification.
source share