Я с интересом прочитал блог Ника Ходжеса на Почему вы Следует использовать интерфейсы и поскольку я уже люблю интерфейсы на более высоком уровне в моем кодировании, я решил посмотреть, как я могу расширить это до довольно низких уровней, и исследовать, какая поддержка для этого существует в классах VCL.
Обычная конструкция, которая мне нужна, - это сделать что-нибудь простое с помощью TStringList, например, этот код для загрузки небольшого списка текстовых файлов в текстовую строку с запятыми:
var
MyList : TStrings;
sCommaText : string;
begin
MyList := TStringList.Create;
try
MyList.LoadFromFile( 'c:\temp\somefile.txt' );
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
finally
MyList.Free;
end;
end;
Было бы неплохо, если бы я мог писать с использованием MyList в качестве интерфейса - это избавит от использования try-finally и улучшит читаемость:
var
MyList : IStrings;
//^^^^^^^
sCommaText : string;
begin
MyList := TStringList.Create;
MyList.LoadFromFile( 'c:\temp\somefile.txt' );
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
end;
Я не вижу определенных IStrings, тем не менее, не в Classes.pas, хотя есть ссылки на него в связи с программированием OLE в Интернете. . Он существует? Это допустимое упрощение? Я использую Delphi XE2.