We can actually decorate anything defined via an interface and we can also have much more interesting strategies. We can build composites over most interfaces. The Composite piece of this note is due to Eugene, by the way. I shamelessly stole it. For completeness, Eugene does the Decorator pattern differently.
Exercises Parametrize the class StartWithT, renaming it, of course, to make it more useful.
Write a boolean reversing decorator for our simple strategies that returns true when the Strategy object it decorates returns false, and conversely. Write a logical OR composite for CheckStrategies. It should return true if any of its parts return true. Otherwise it should return false. As noted above, Eugene Wallingford had a big influence on this.