У меня возникли проблемы с проектированием класса. Создание класса Customer выглядит просто:Как построить объект с большим количеством свойств?
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
Вы можете сделать аналогичным вашему делу создание новой записи БД ('insert'). Подумайте, какие свойства * необходимы * (используйте их в аргументах конструктора) и какие свойства имеют значения по умолчанию (инициализируйте их внутри вашего конструктора классов). – kobik
вы можете определить ** конструктор **, который принимает массив из пары и используя RTTI, вы анализируете класс TCustomer и задаете значения полей из параметров, то есть TMyCustomer.Create ([AProp ('FirstName', 'Joe'), AProp («LastName», «Doe»), ...]); –
ComputerSaysNo