This is a link to my application that actually has the design specified in the image.
The Idea behind the image is that the SubjectInfoViewer behaves as the context in the strategy pattern, and the ViewingQueryComponent behaves as the strategy interface, as well as the component class in the decorator pattern, and its implementing classes except the Filter class are the different strategies. These strategies return an sql string specific to their description, which can be decorated using the Filter class, which is the decorator, in the decorator pattern. The classes implementing the filter class just append the where clause of the sql string produced by the strategies and push the parameters involved in the where clause in a parameter stack, so they can finally by used by a parameterized sql statement involving the whole “stitched” sql string.
For some reason, this doesn’t seem to be the right approach to tackle this particular usecase. Kindly suggest the best practices used in this situation.