Então minha dúvida é a forma como é aplicado o Factory. Seria correto aplicar de uma forma em que por exemplo eu crio uma interface Carro onde disponibilizo os métodos necessários como andar, freia etc. E crio várias outras class que implementam o mesmo, e acabo criando uma outra class que seria uma espécie de CarroFactory onde ele me retorna o uma interface Carro implementada conforme minha requisição, basicamente esse seria o conceito de Factory, ou é muito mais além disso? Por que a única vantagens que eu consegui ver sobre esse conceito é o fato de por exemplo de uma class que irá compor o carro não precisar se preocupar em como criar o carro e apenas saber utilizar com os métodos públicos que foram disponibilizados.
Antes de mais nada, aconselho vc a comprar o livro: Use a cabeça! Padrões de Projetos. Com este livro, todas as suas perguntas serão respondidas.
Agora, respondendo as suas perguntas:
O padrão factory é basicamente isso. Vc cria uma interface e cria classes que a implementem. Depois vc cria a sua classe de fábrica (Factory) que vai se encarregar de criar as instâncias pra vc.
O padrão Factory é muito mais que isso. Veja por esse lado:
Quando vc desenvolve do “jeito tradicional”, vc corre o risco do seu código ser fechado para alterações, ou encher seu código de IFs.
Tivemos um caso assim aqui na empresa:
Foi criado um software para restaurantes e lanchonetes. No início, tinhamos somente pedido nas mesas. Depois foram criados os pedidos com cartão, disk entregas e pedidos on-line. O código ficou um emaranhado de IFs, e muito difícil de alterá-lo.
Sem o padrão Factory, fica difícil do software crescer.