Magic pushbutton
Apariencia
En computación el antipatrón de diseño magic pushbutton ocurre en el desarrollo de interfaces gráficas, cuando el programador construye primero la interfaz gráfica y luego las llamadas a la lógica de negocio se realizan en los huecos, generalmente representados como métodos de acción de los elementos de la interfaz.
Los problemas con este antipatrón son:
- El código asociado a cada botón crece de manera inmanejable, parte de la lógica del negocio termina implantada dentro de la interfaz.
- Se dificultan los cambios en la interfaz usuario o el agregar una nueva interfaz a las ya existentes.
- Se dificulta la organización de las pruebas unitarias de la aplicación.
Ejemplo (en Borland Delphi)
[editar]procedure TForm1.Button1Click(Sender: TObject); var reg:TRegistry; begin reg:=TRegistry.Create; try reg.RootKey:=HKey_Current_User; if reg.OpenKey('\Mi\Empresa', true) then begin reg.WriteString('Filename',edit1.text); end; finally reg.Free; end; end;
Una mejor manera de trabajar es el colocar la lógica del negocio (en este ejemplo, el manejo del archivo) en una clase perteneciente a la lógica del negocio que será llamada desde la interfaz.
type TPreferences = class private FFilename: string; procedure SetFilename(const Value: string); public property Filename:string read FFilename write SetFilename; procedure Load; procedure Save; end;
procedure TForm1.Button1Click(Sender: TObject); begin Preferences.Save; end;
procedure TForm1.Edit1Change(Sender: TObject); begin Preferences.Filename:=edit1.text; end;