Marcos Douglas wrote:

> Marcos,
> 
> Mesmo trabalhando com interfaces, nem sempre temos que utilizar a variável do
> tipo da interface.
> 
> Exemplo: Vamos supor que eu tenho uma Lista de objetos (interfaces) que é
> utilizado para fazer uma série de validações. Cada objeto na lista, ao ser
> criado, recebe parâmetros diferentes (alterar propriedades, chamar métodos,
> etc), mas TODOS implementam a mesma interface "IValidator". Neste cenário
> temos uma interface comum a várias classes, mas para cada classe que
> implementa esta interface, há propriedades/métodos diferentes entre elas que
> devem ser setadas após criar os objetos. Os objetos deveriam ser criados pelo
> tipo da classe e não pela interface.

Estes tipos de lista guardam os ponteiros para interface, mas jamais 
criam as instâncias. Das duas, uma: ou essa lista é usada pela classe 
interessada e o ponteiro é incluso por ela, ou é usado uma factory para 
criar a instância.

Misturar classe e interface sem (muita) dor de cabeça tem dois meios 
(que eu conheço):

- classes com contagem de referência;
- chamando um AddRef quando criar uma instância e associá-la a uma 
classe, e neste caso usar sempre .Release ao invés de .Free.

--
João Morais

Responder a