On Filters and Static classes
by Abhijeet Kashnia
I came across a useful illustration of the Filter design pattern:
http://www.erik-rasmussen.com/blog/2008/01/18/the-filter-pattern-java-conditional-abstraction-with-iterables/
And here's a discussion on the differences between singletons and static classes:
http://www.javaworld.com/javaqa/2000-12/03-qa-1221-singleton.html
The point is that static methods cannot be overriden and so static class is more of a utility. This means that a static class doesn't allow you the usual benefits of OOP.