Padrões Criacionais

O Factory Method é um padrão criacional que fornece uma interface para criar objetos em uma superclasse, mas permite que as subclasses alterem o tipo de objetos que serão criados. Ele é utilizado quando se deseja salvar recursos do sistema por meio de uma reutilização de objetos existentes ao invés de os reconstruir cada vez que for utilizado.

factorymethod.png


O Abstract Method é um padrão de projeto criacional que permite a produção de famílias de objetos relacionados sem ter especificar suas classes concretas, oferecendo uma interface para criação de objetos de cada família de objetos. Esse padrão geralmente é baseado em um conjunto de Factory Methods.

Untitled

abstractfactory.png


Factory Method vs Abstract Factory

O padrão Factory Method fornece uma interface para criar objetos em uma superclasse, mas permite que as subclasses alterem o tipo de objetos que serão criados. É usado quando se deseja economizar recursos do sistema reutilizando objetos existentes em vez de reconstruí-los cada vez que são utilizados.

Em contraste, o padrão Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Esse padrão geralmente é baseado em um conjunto de Factory Methods.

Ambos os padrões são úteis para criar objetos com características variáveis ou para criar objetos que dependem de outros objetos. Ao usar esses padrões, você pode alcançar maior flexibilidade e adaptabilidade em seus designs.


O Builder é um padrão de projeto criacional que permite construir objetos complexos passo a passo. O padrão permite-lhe produzir diferentes tipos e representações de um objeto utilizando o mesmo código de construção. O builder é bom ser utilizado para se livrar do anti-padrão construtor telescópico, no qual se tem um construtor com muitos parâmetros opcionais, deixando o código desnecessariamente grande.

e70ef6784159d96ae6465dd4a8864f0b.png

builder.png


O Prototype é um padrão de projeto criacional que permite a criação de novos objetos a partir de uma instância existente, clonando assim seus atributos e métodos. Isso é útil quando se deseja criar novos objetos com base em um objeto já existente, mas sem precisar escrever código para criar cada objeto individualmente.