- Erich Gamma
- Richard Helm
- Ralph Johnson
- John Vlissides
- .NET Core 2.2
- Visual studio 2017 ou 2019 (Sugestão)
Define uma interface para a criação de um objeto, mas a sub classe decide qual classe será instanciada.
Prove uma interface para criar uma família de objetos relacionados ou dependentes sem especificar sua classe concreta.
Permit separar e reutilizar um processo específico para construir algo. Geralmente utilizado para contruir objetos complexos.
Tenha certeza que a classe terá apenas uma instância, e prover um ponto de acesso global a ela.
Utiliza composição para limitar a herança e simplifica o relacionamento entre os objetos, facilitando o seu gerenciamento.
Fazer com que interfaces incompatíveis trabalhem em conjuto.
Tratar um grupo de objetos em outro objeto como o mesmo, mesmo sendo diferentes.
Prove um modo de acessar e iterar uma coleção de objetos de um mesmo modo, independente do tipo.
Mudar um objeto causa a mudança ou ação em outro objeto atravéz da notificação.
Passando a responsabilidade de uma tarefa de um objeto para o outro, assim por diante, até que um objeto aceite e complete a tarefa.
Utilizar um objeto para armazenar uma informação requerida, para iniciar uma ação a qualquer momento.
Um Tradutor
Permite controlar a comunicação entre cada objeto.
Permite adicionar e executar uma nova funcionalidade em um objeto, sem mudar a sua estrutura, o que poderia causar problemas.
O uso do repositório permite aos desenvolvedores criarem uma camada de abstração entre a aplicação e camada de dados.
A unidade de trabalho observa todas as ações durante uma transação de negócios, que pode afetar a base de dados. Após concluída as alterações, a base de dados é resultado do seu trabalho.