Why You Should Be Using Interfaces numaralı yazara ait Nick Hodges bloguyla okudum ve kodlamada daha yüksek bir düzeyde arabirimlere zaten aşık olduğum için, bunu nasıl genişletebileceğime bakmaya karar verdim Düşük seviyeler ve VCL sınıflarında bunun için hangi desteğin var olduğunu araştırmak.TStrings ve TStringList ile bir arabirime karşı kod
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;
Güzel bir basitleştirme eğer görünüyor: ihtiyacım
Yaygın bir yapı virgül metin dizesine küçük bir metin dosyası listesini yüklemek için bu kod örneğin bir TStringList ile basit bir şey yapmaktır Ben bir arayüz olarak MyList kullanarak yazabiliriz - bu deneme-nihayet ve geliştirmek okunabilirliği kurtulmak olacaktır:
var
MyList : IStrings;
//^^^^^^^
sCommaText : string;
begin
MyList := TStringList.Create;
MyList.LoadFromFile('c:\temp\somefile.txt');
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
end;
bir IStrings olsa tanımlanmış göremiyorum - kesinlikle Classes.pas içinde, olmasına rağmen OLE programlama ile bağlantılı olarak referanslar internet üzerinden. Var mı? Bu geçerli bir basitleştirme mi? Delphi XE2 kullanıyorum.
Benim düşüncemi istiyorsan: yapma! Arayüzleri asla kullanmamanın bir çözümü olmadığı gibi, her şey için arayüzler de kullanılmaz. Hatta Nick bile TStrings/TStringList'in son blog yazısında sınıf örnekleri olarak kullanılmasını istiyor. –
TStrings, 'neredeyse' bir arabirimdir, farklı uygulamalara sahip olabilecek soyut bir sınıftır. Mümkün olduğunda, TStringList yerine sadece TStrings'i parametre tipi olarak geçiriyorum. – mjn
@UweRaabe ile aynı fikirdeyim. Arayüzler güçlüdür ve güçlü araçlar sıklıkla yeni başlayanlar tarafından kötüye kullanılmaktadır. Sadece bir nesne referansı yerine bir arayüz referansı kullanmayın, çünkü bu mümkün. Geniş açılabilir tasarıma - arayüzlerin orijinal amacına bağlı kalmanızı tavsiye ederim. – kludg