class PanelAggregator //defina la interfaz para agregar los panels { public: PanelAggregator(); virtual void AggregatePanel( ) {} virtual void SetName(char* name) {} virtual void SetRadioButtons(int quantity) {} virtual Panel* GetPanel() {return 0;} } int main() { //new Director - ObjectVisualizer ObjectVisualizer ov; //new Builder - PanelAggregator Panel* panelResult; //new ConcreteBuilder - SimplePanelAggregator SimplePanel panel; //method Construct ov.AggregatePanel(panel,"",0); //method GetResult panelResult = panel.GetSimplePanel(); } Panel* ObjectVisualizer::AggregatePanel (PanelAggregator& builder,char * name, int numRB) { builder.AggregatePanel(); builder.SetName(name); builder.SetRadioButtons(numRB); return builder.GetPanel(); } class SimplePanelAggregator::public PanelAggregator { public: SimplePanelAggregator(); virtual void AggregatePanel( ); virtual void SetName(char*); virtual void SetRadioButtons(int); virtual Panel* GetPanel(); private: Panel* _currentPanel; } void SimplePanelAggregator::AggregatePanel() { _currentPanel = new Panel; } Panel* SimplePanelAggregator::GetPanel() { Panel* panel = _currentPanel; return panel; }