Yo propongo otra cosa, de la misma índole, pero en otro sentido:
Código Delphi
[-]
TForm1 = class (tForm)
private
Fparam1:string;
Fparam2:integer;
procedure Setparam2(value:integer);
function Getparam2:integer;
public
constructor Create(Aowner:TObject);override;
property Parametro1:string read Fparam1 write Fparam1;
property Parametro1:integer read Getparam2 write Setparam2;
procedure Execute;
end;
constructor TForm1.Create(Aowner:TObject);
begin
inherited Create(Aowner);
Fparam1 := EmptyStr;
Fparam2 := -1;
end;
procedure TForm1.SetParam2(value:integer);
begin
if Value <> Fparam2 then
begin
end;
end;
function TForm1.GetParam2:integer;
begin
result := Fparam2;
end;
procedure TForm1.Execute;
begin
if Fparam1 = EmptyStr then
raise Exception.Create('dale un valor a Parametro1');
if Fparam2 = -1 then
raise exception.Create ('dale un valor a Parametro2');
Ventajas:
- Si ahora necesitamos añadir otro parámetro más, no hay necesidad de modificar la declaración del procedimiento Execute, es decir modificar los parámetros de entrada que necesita, simplemente se añade una propiedad más, modificas internamente el método Execute y listo. Normalmente no tienes que modificar el programa que hace uso de la clase.
- Podemos saber los valores antiguos y nuevos de cada parámetro, como ya dije, para inicializar o liberar recursos.
- Su uso es más parecido a la VCL, por tanto en un futuro será intuitivo su uso. ¿el TQuery lleva parámetros en su método Open(sql: string)?, o por ejemplo, ¿el TOpenDialog en su método Execute?, pues por eso mismo.
Saludos