mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-02-24 17:52:25 +01:00
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.