Solution (source code)

= Solution

This is the \b[<decorator pattern>, a <structural pattern>]. `BasicPlan` supplies the initial component. `Packages` stores another `CableTV` behind the same interface and delegates to it; `Movies` and `HDChannels` add their own price and description. Wrapping one package around another combines the optional responsibilities without constructing a subclass for each possible combination.