My god what an abomination of programming simplicity. Do people actually write code like this? It's as if someone said you must use interfaces and you must use objects for even the simplest boolean logic statement. I think I would claw my eyes out if I had to read and write code like this on a regular basis.
https://en.wikipedia.org/wiki/Specification_pattern