O Princípio Aberto/Fechado é o princípio de design mais básico no mundo do desenvolvimento de software. Ele nos orienta como construir um sistema estável e flexível.
Definição:
Uma entidade de software como classe, módulo e função deve ser aberta para extensão e fechada para modificação.
O significado do princípio de abertura e fechamento é que uma entidade de software deve ser expandida para conseguir mudanças, ao invés de modificar o código existente para conseguir mudanças.
O princípio de abertura e fechamento é um princípio que restringe o desenvolvimento e design atuais para as coisas futuras da entidade de software.
Nota: O princípio de abertura e fechamento é aberto para extensão e fechado para modificação. Isso não significa que nenhuma modificação será feita. Mudanças em módulos de baixo nível devem ser acopladas a módulos de alto nível, caso contrário será um fragmento de código isolado e sem sentido.
A importância do princípio de abertura e fechamento:
- O impacto dos princípios de abertura e fechamento nos testes
O princípio de abertura e fechamento é manter o código de teste original ainda funcionando normalmente, só precisamos testar o código estendido.
- O princípio de abertura e fechamento pode melhorar a reutilização
No design orientado a objetos , toda a lógica é combinada a partir da lógica atômica, em vez de implementar uma lógica de negócios em uma classe de forma independente. Só assim o código pode ser reutilizado. Quanto menor a granularidade, maior a possibilidade de ser reutilizado.
- Princípio aberto e fechado pode melhorar a manutenção
- Requisitos de desenvolvimento orientado a objetos
Como usar o princípio de abertura e fechamento:
Primeiro , restrinja a extensão através da interface ou classe abstrata, limite a extensão do limite e não permita métodos públicos que não existam na interface ou classe abstrata;
Segundo , tente usar interfaces ou classes abstratas para tipos de parâmetros e objetos de referência em vez de classes de implementação;
Terceiro , a camada de abstração deve ser mantida o mais estável possível, uma vez confirmada, nenhuma modificação é permitida.
O encapsulamento de mudanças tem dois significados:
Primeiro, encapsule as mesmas mudanças em uma interface ou classe abstrata;
Segundo, encapsular diferentes mudanças em diferentes interfaces ou classes abstratas. Duas alterações diferentes não devem aparecer na mesma interface ou classe abstrata.
Exemplos
Um exemplo, abrir e fechar portas manualmente.
Caso haja uma nova demanda, é necessário aumentar a função de abertura e fechamento manual da gaveta. Para o código, você precisa adicionar uma classe Drawer e modificar a classe Hand ao mesmo tempo.
Seguindo o exemplo do princípio de abertura e fechamento OCP, abrir e fechar a porta manualmente depende de uma interface, e a classe de implementação específica implementa essa interface.
Quando é necessário aumentar o número de mãos para abrir e fechar a geladeira, a classe refrigerador implementa essa interface sem modificar a classe e a interface Hand originais.