我在設計一個類時遇到了一些麻煩。 創建客戶類看起來簡單:如何構建具有很多屬性的對象?
TCustomer = Class
private
FIdNumber: String;
FName: String;
procedure SetName(const Value: String);
procedure SetNumber(const Value: String);
public
Property Name : String read FName;
Property IdNumber : String read FIdNumber;
Constructor Create(Number, Name : String);
end;
constructor TCustomer.Create(ANumber, AName: String);
begin
SetName(AName);
SetNumber(ANumber);
end;
MyCustomer := TCustomer.Create('1', 'John Doe');
但我也有客戶更多的屬性:他住在哪裏,出生日期等等等等
TCustomer = Class
private
{..snip snip..}
public
Property Name : String read FName;
Property IdNumber : String read FIdNumber;
Property Street : String read FStreet;
Property HouseNumber : Integer : read FHouseNumber;
..
..
..
Constructor Create(Number, Name, Street : String; Housenumber : Integer .. .. ..);
end;
正如你看到的我結束了一個構造函數有很多爭論。構建具有許多屬性的對象的更好方法是什麼?
我最初thoght是構造類只與維持類實例創建的*至關重要*屬性。例如在你的情況下,它可能是一個唯一的'UserID'。 – kobik 2013-03-06 15:52:48
您可以將您的情況與創建新數據庫記錄('insert')做類似。考慮*所需的屬性*(在構造函數參數中使用它們)以及哪些屬性具有默認值(在您的類構造函數中初始化它們)。 – kobik 2013-03-06 16:02:21
您可以定義**構造函數**,該構造函數需要一對對的數組,並使用RTTI解析TCustomer類並從參數中設置字段值,即TMyCustomer.Create([AProp('FirstName','Joe')) AProp('LastName','Doe'),...]); –
ComputerSaysNo
2013-03-06 16:06:51