Design a system for changing the style of windows on the screen. Three types of window are possible: simple, with menu and transparent. The style of these windows depends on the platform of use. Two platforms are considered, Gnome and XFCE. The client code must be able to be written independently and without prior knowledge of the future execution platform.
In this solution, there is a real separation between the windows style and their content. It is possible to add a new style or a new type without modifying existing code.
This solution has no extensibility and a lot of ConcreteImplementor
Click here to see the spoiled pattern deduced from this alternative solution
Probably the worst case with Implementor under Refined Abstraction
Click here to see the spoiled pattern deduced from this alternative solution
Probably the worst case with Abstraction under Concrete Implementor
Click here to see the spoiled pattern deduced from this alternative solution