بشكل عام هذا يسمى Template وبشكل خاص بالدلفي او الباسكال يسمى Generic
هو طريقة لتوفير كتابة وتكرار الكود لاكثر من مرة
مثلا انت بحاجة لعمل كلاس يحتوي على حقل من نوع integer و تابع يبحث عن كلمة و يرجع النوع integer،
كتبنا الكود
program generic_test;
{$mode delphi}{$h+}
type
TMyIntegerFind = Class(TObject)
public
Value: Integer;
function Find(Name: string): Integer;
end;
function TMyIntegerFind.Find(Name: string): Integer;
begin
//code to find value
Result := 10; //for testing only
end;
begin
end.
فيما بعد اضطررت لكتابة كود يعمل نفس العمل لكن لنوع Double مااللذي سيحدث؟
تكرار الكود
program generic_test;
{$mode delphi}{$h+}
type
TMyIntegerFind = Class(TObject)
public
Value: Integer;
function Find(Name: string): Integer;
end;
function TMyIntegerFind.Find(Name: string): Integer;
begin
//code to find value
Result := 10; //for testing only
end;
//---------------------------------------------
type
TMyDoubleFind = Class(TObject)
public
Value: Double;
function Find(Name: string): Double;
end;
function TMyDoubleFind.Find(Name: string): Double;
begin
//code to find value
Result := 10; //for testing only
end;
begin
end.
بدون ال template او generics انت مضطر لتكرار الكود، او استعمال بعض الحيل، لكن باستعمال ال generic سيكون الوضع اسهل
program generic_test;
{$mode delphi}{$h+}
type
TMyFind<TMyType> = Class(TObject)
public
Value: TMyType;
function Find(Name: string): TMyType;
end;
//---------------------------------------------
TMyIntegerFind=TMyFind<Integer>;
TMyDoubleFind=TMyFind<Double>;
function TMyFind<TMyType>.Find(Name: string): TMyType;
begin
//code to find value
Result := 10; //for testing only
end;
begin
end.