Structural Patterns
- Foco na criação de estruturas maiores por meio do agrupamento de várias classes e objetos menores, geralmente por meio de composição ou herança.
- Esses patterns melhoram a flexibilidade e a eficiência do programa
Os padrões estruturais de design de software têm como objetivo principal simplificar o design, estabelecendo uma maneira eficiente de configurar relações entre entidades, como classes e objetos.
Eles visam resolver problemas relacionados à composição e estrutura de classes e objetos, facilitando a organização e a comunicação entre componentes diferentes em um sistema de software. Os problemas específicos que os padrões estruturais tentam resolver incluem:
-
Extensibilidade e Flexibilidade: Facilitar a extensão de funcionalidades de classes existentes ou a criação de novas funcionalidades com base nas existentes, sem alterar o código original.
-
Simplificação de Relacionamentos Complexos: Auxiliar na gestão de sistemas com muitas classes inter-relacionadas, proporcionando maneiras de simplificar essas relações e reduzir a complexidade.
-
Adaptação de Interfaces: Permitir que classes com interfaces incompatíveis trabalhem juntas por meio da adaptação ou tradução de suas interfaces.
-
Encapsulamento e Abstração: Fornecer mecanismos para encapsular ou abstrair a funcionalidade e a complexidade de um sistema, tornando-o mais compreensível e fácil de usar.
-
Divisão de Responsabilidades: Dividir responsabilidades entre diferentes classes e objetos de maneira eficaz, promovendo a coesão e o baixo acoplamento.
-
Composição de Objetos: Facilitar a composição de objetos para alcançar novas funcionalidades, utilizando a composição em vez da herança, o que oferece maior flexibilidade.
Alguns dos padrões estruturais mais conhecidos incluem Adapter, Bridge, Composite, Decorator, Facade, Flyweight e Proxy. Cada um desses padrões tem um propósito específico e ajuda a resolver um conjunto particular de problemas relacionados à estruturação e organização de classes e objetos em um sistema de software.