No exactamente. Como lo propones tendrías que estar verificando cuál usar en cada método de TSuperPdf.
Lo que te propone
juanmdq (excelente idea por cierto), es más del estilo:
Código Delphi
[-]
type
TSuperPdf = class
end;
TPdf60 = class(TSuperPdf)
private
Pdf: TPdf;
end;
TPdf70 = class(TSuperPdf)
private
Pdf: TAcroPdf;
end;
La clase TSuperPdf sólo definiría los métodos comunes o similares pero no los implementa (virtual; abstract)
Las clases TPdf60 y TPdf70 redefinen esos métodos y los implementan usando los métodos de su respectiva componente privada Pdf.
Al comienzo de la aplicación determinas qué instancia construir y la colocas en una variable de tipo TSuperPdf:
Código Delphi
[-]
if Version6 then
SuperPdf := TPdf60.Create
else if Version7 then
SuperPdf := TPdf70.Create
else
raise Exception.Create('Versión no soportada');
Así, además, estarás listo para cuando salga la versión 8: sólo tendrásque crear la correspondiente claseTPdf80 descendiente de TSuperPdf y el resto del código en tu aplicación no cambiará.
// Saludos