[MÚSICA] [MÚSICA] Olá, bem-vindo ao curso de Desenvolvimento Ágil com Padrões de Projeto. Eu sou Clovis Fernandes e nesta aula iremos apresentar seis problemas com o uso de construtores. Nós já havíamos mostrado dois, nas partes 1, 2 e 3 anteriores. Vamos até recapitulá-los agora. O primeiro problema é aquele da... com construtores não consigo expressar a intenção do programador, não aparece explicitamente. O segundo problema que nós vimos também é que é impossível criar dois construtores com a mesma assinatura. Java não consegue lidar com isso. Então esses são os dois problemas que vão ser sempre usuais. O terceiro problema é que quando eu passo, por exemplo, new X, a classe X, eu crio uma instância da classe X, existe custo computacional e toda vez que eu fizer o meu X, eu tenho todo o trabalho de construir essa classe X. Não tem como evitar isso através do new, e nem sempre eu preciso criar novo objeto. Muitas vezes o objeto é usado muitos lugares, eu quero aproveitar oportunisticamente método, uma funcionalidade daquela classe e não me interessa o tipo de objeto. Mas se eu usar o new, toda hora eu estou criando isso, então é custo computacional. O quarto parece ser o mesmo anterior, mas não é, o anterior é só do custo computacional. O outro é que eu não consigo voltar o mesmo objeto outra vez. Se eu estiver, por exemplo, criando umas conexões, objeto que cria conexões para portas da internet. Então eu quero já deixar pronto esses objetos pra conexão 1 pra uma porta 80 a 80, pra conexão 2 pra outra porta, conexão 3 para mais uma outra porta, eu quero deixar prontos esses objetos, eu não consigo voltar isso. Eu sou obrigado sempre a estar recriando com o construtor. Então, esse é problema que eu tenho ao usar o construtor, sempre estou criando novo objeto, tem custo computacional de criar e fico criando quando às vezes eu não preciso. Outro problema é que, às vezes, o new sempre volta com objeto da classe, mas às vezes eu quero objeto da subclasse daquela classe. O construtor, quando eu uso o New, não vou conseguir resolver esse problema. Muitas vezes eu quero da subclasse. E uma coisa que fica clara, quer dizer, quando eu, determinado método dentro de uma classe, crio uma instância da outra classe, eu crio acomplamento concreto entre uma classe que está usando objeto da outra classe. Então eu crio acoplamento concreto. Às vezes eu não quero que seja feito dessa forma. Como resolver isso? Eu tenho esses seis problemas que eu listei. E como eu vou resolver? Nas próximas duas aulas nós iremos mostrar que nós podemos resolver isso, pelo menos os cinco primeiros problemas, usando métodos que a gente chama de Métodos Estáticos de Fábrica, Static Fabric Methods. Que nós iremos então mostrar como isso vai ser feito para o problema 1 e 2, expressar a intenção do programador. E pelo construtor não dá pra fazer isso. E dado que eu não consigo ter dois construtores com a mesma assinatura, eu vou usar então os métodos de fábrica pra expressar essas intenções diferentes que construtores de mesma assinatura seriam necessários. Os outros problemas vão ser também resolvidos através Métodos de Fábrica, mas no meio do contexto, alguns deles no contexto de outros padrões de projeto que nós estaremos vendo no decorrer desse curso. Obrigado! [MUSICA] [MUSICA]