"Técnicas de modelagem de classes e objetos que resolvem problemas comuns no desenvolvimento de software."
"Utilizado em linguagens orientadas a objetos, como C++, Smalltalk, Java, C#, Golang, etc."
"Precisamos garantir que existirá apenas uma instância de uma determinada classe durante o ciclo de vida da aplicação. Nesta instância, guardaremos algumas informações globais."
"Temos alguns botões no nosso Discman, como o play, pause, stop e record. Como podemos organizar a implementação das regras de negócio de cada um dos botões?"
"Nosso controlador não deve saber como construir os comandos, apenas como utilizá-los. O que acham sobre delegarmos a construção dos nossos comandos a outro objeto?"
"Na classe Pedido você implementa o método getTotalComDesconto(). O desconto varia conforme a forma de pagamento escolhida pelo cliente ou o valor total da compra."
"A escola decidiu abrir uma nova turma, porém com um preço promocional. Como podemos reaproveitar o código da classe Turma modificando apenas o método que retorna o valor final, sem utilizar herança?"
about.me/ricardo.longa