Os padrões Gang of Four (GoF) organizam um conjunto de padrões de projeto (design patterns) em três grupos: de criação, estruturais e comportamentais. Três destes padrões são descritos a seguir:
- Em situações em que classes precisam trabalhar juntas, mas isto não está sendo possível porque suas interfaces são incompatíveis, pode-se utilizar este design pattern que permite converter a interface de uma classe em outra interface esperada pelos clientes de forma que classes com interfaces incompatíveis possam interagir.
- Este design pattern pode ser utilizado quando se deseja definir uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes são notificados e atualizados.
- Em situações em que se deseja acessar o conteúdo de uma coleção sem expor sua representação interna utiliza-se este design pattern que permite prover uma interface única para varrer coleções diferentes.
Os padrões descritos nos itens I, II e III são, respectivamente,