Previous example was simply implementing a strategy pattern.
A key problem is that WebService made clear that it did no actual output of its own - it handed it off to 'decorators'.
A decorator should always wrap a class that already has its own complete, self-contained functionality.
In this way, they only enhance / modify it. An instance that is non-decorated should work fully by itself.
Note the distinguishing difference between this and sub-classing - here the enhancement is added dynamically, at runtime, and to one instance.
With sub-classing, the enhancement is added at compile / parse time, and is applied to all instances / uses of the subclass.