Padrões de projeto estruturais
Os padrões estruturais explicam como montar objetos e classes em estruturas maiores mas ainda mantendo essas estruturas flexíveis e eficientes.
Permite a colaboração de objetos de interfaces incompatíveis.
BridgePermite que você divida uma classe grande ou um conjunto de classes intimamente ligadas em duas hierarquias separadas—abstração e implementação—que podem ser desenvolvidas independentemente umas das outras.
CompositePermite que você componha objetos em estrutura de árvores e então trabalhe com essas estruturas como se fossem objetos individuais.
DecoratorPermite que você adicione novos comportamentos a objetos colocando eles dentro de um envoltório (wrapper) de objetos que contém os comportamentos.
FacadeFornece uma interface simplificada para uma biblioteca, um framework, ou qualquer outro conjunto complexo de classes.
FlyweightPermite que você coloque mais objetos na quantidade disponível de RAM ao compartilhar partes do estado entre múltiplos objetos ao invés de manter todos os dados em cada objeto.
ProxyPermite que você forneça um substituto ou um espaço reservado para outro objeto. Um proxy controla o acesso ao objeto original, permitindo que você faça algo ou antes ou depois do pedido chegar ao objeto original.