Unter
OOP-Gesichtspunkten ist dieses Design auch nicht zu empfehlen.
Falls der Fragesteller etwas mit
OOP im Sinn hat, würde ich zur Schablonenmethodenmuster raten, wie von Valle
hier schon empfohlen wurde.
Wenn
OOP gar nicht geht, könnte man noch Prozedurvariablen und Enums ins Spiel bringen:
Delphi-Quellcode:
Type
TFunction = Function (p : Integer) : Integer;
Var
SpecialFunc : Array [TMachWasFlag] of TFunction;
function DoSomething (p : Integer) : Integer; begin result := p + 1 end;
function DoSomethingElse (p : Integer) : Integer; begin result := p + 10 end;
function MachWas( .. ; Flag: TMachWasFlag): Integer;
begin
Result := 10; //Stellvertretend für viel Code
Result := SpecialFunc(Flag);
Result := Result * 10; //Stellvertretend für viel Code
end;
procedure InitSpecialFunc;
Begin
SpecialFunc[mwfDoSomething] := DoSomething;
SpecialFunc[mwfDoSomethingElse] := DoSomethingElse;
End;
... InitSpecialFunc;
MachWas(...
"Vorteil": OCP in Ansätzen umgesetzt.