Design Patterns são soluções generalistas para problemas recorrentes durante o desenvolvimento de um software. Não se trata de um framework ou um código pronto, mas de uma definição de alto nível em como solucionar um determinado problema.
No Magento 2 encontramos muitos Design Patterns e vamos discutir sobre alguns deles.
Na comunidade de programação, um Design Pattern é uma maneira recomendada de escrever código que inclui quando usar ou não o padrão.
Contratos de Serviços:
O Magento é um sistema modular que permite que desenvolvedores personalizem e sobreescrevam partes essenciais de sua estrutura. Essa flexibilidade, no entanto, tem um preço. A lógica de negócios tende a vazar pelas camadas do sistema Magento, que se manifesta como código duplicado e inconsistente.
O que é um contrato de serviço?
Um contrato de serviço é um conjunto de interfaces PHP definidas para um módulo. Um contrato de serviço inclui interface de dados, preservando a integridade dos dados e interface de serviços, que ocultam detalhes da lógica de negócios de solicitantes de serviço, como controllers, web services e outros módulos.
Se os desenvolvedores definem interfaces de dados e serviços de acordo com um Design Pattern, o resultado é uma API durável e bem definida que outros módulos e extensões de terceiros podem implementar por meio de recursos do Magento.
Public interfaces & API:
Um public interface é um conjunto de códigos que os desenvolvedores podem chamar, implementar ou construir como um plug-in. O Magento garante que este código não irá mudar em versões posteriores sem uma grande mudança de versão.
Public interface para um módulo são marcadas com @api
annotation.
Uma API (application programming interface) interface de programação de aplicativos é um conjunto de interfaces e suas implementações que um módulo fornece para outros módulos.
Tipos de API:
- Estrutura de diretórios;
- Estrutura dos arquivos de configuração;
- Eventos;
- API do cliente;
- API do provedor (SPI).
Para mais informações: Contrato de Serviços e Public Interface e API
Dúvidas? Posta aí!!!
Um abraço.