Esse assunto pode ir longe hein !
Mas vou por minha opinião…
Pra mim, o uso de Interface serve para que se possa ter um certo pardrão entre os objetos de sua aplicação… no qual facilita futuras alterações…
Em uma interface vc especifica os métodos que seus “filhos” deverão implementar…
Uma coisa legal nisso, eh que vc pode implementar os métodos de formas diferentes para cada objeto e tb pode adicionar novos atributos…
(nada de novidade neh?)
Agora… a maneira de como se utilizar esse monte de classes fica TOTALMENTE a sua escolha…
Não eh um manual ou um artigo que irá te falar qual a melhor opção ou qual a melhor forma de se modelar um sistema…
Acho estranho ficarmos nos bazeando nos que certas pessoas falam… quel disse que eles estão certos ? quem disse que essa eh a melhor maneira ??? quem pode provar que eh melhor utilizar uma herança, uma composição ou uma agregação ??
O cara que criou a linguagem ?? Os analistas mais falados do mundo ??
Bah! Se nos formos ver os padrões de modelagem especificados em vários lugares… são tantos padrões que fica dificil escolher um…
Camdas então… ! Nossa… vc pode fazer uma modelagem em tantas camadas que acabam deixando o desenvolvedor doido… ^^
Os conceitos de O.O n são regras… são sugestões que vc pode utilizar… cabe a vc utiliza-las, e cabe a vc fazer com que funcionem…
Quebra de encapsulamento ?? Se isso ocorre, não eh porque a idéia esta errada, mas sim porque n foi bem aplicada… Se uma Interface oferece quebra ou não… isso eh vc q define… vc que deve controlar…
Como controlar isso ??? Vc escolhe, n será um padrão ipipoca que vai te mostrar isso… n existe uma maneira correta de se utilizar encapsulamento… existem várias… qual a melhor ?? qual funciona de verdade ??
Qual segue as regras ?? Regras ?? Quem disse que existem regras ??
Kraca… n qnto mais digitar !
Fui !