Property в интерфейсах
Обычная мотивация для такого подхода: хочется описать свойство, а функции оставить личным делом реализующего класса.
function GetOnProgress: T_OnProgress; // property OnProgress: T_OnProgress read GetOnProgress;
Как оставить в интерфейсе только property?
Ответ: Никак. Но, и незачем.
В классе свойство даёт возможность укрыть атрибут класса от прямой правки, сделать доступным только через методы.
Но через интерфейс такого доступа к полям нет в принципе, интерфейс декларирует только методы.
Получается, ничего плохого в доступности методов нет.
type IAny = interface function GetP: TP; property SomeP : TP read GetP; end; ... var any : IAny; locP: TP; ... locP := any.SomeP; // просто один из вариантов записи. // locP := any.GetP - ничем не хуже, и доступность функции через интерфейс не должна нас беспокоить.
Метки: