O princípio fechado aberto é o princípio de design mais básico no mundo Java. Ele nos guia como construir um sistema estável e flexível.
definição:
Uma entidade de software, como classes, módulos e funções, deve ser aberta a extensões e fechada a modificações.
Entidades de software como classes, módulos e funções devem estar abertas para extensão, mas fechadas para modificações.
O significado do princípio de abertura e fechamento é que uma entidade de software deve alcançar alterações por meio de extensões, em vez de modificar o código existente.
A entidade de software inclui as seguintes peças:
O princípio de abertura e fechamento é um princípio para as restrições no design atual de desenvolvimento formulado para coisas futuras da entidade de software.
Nota: O princípio de abertura e fechamento está aberto a extensões e modificações de fechamento não significa que nenhuma modificação seja feita. Alterações nos módulos de baixo nível devem ser acopladas a módulos de alto nível, caso contrário, será um trecho de código isolado e sem sentido.
Tipos de mudança:
O caminho básico de um projeto deve ser o seguinte: Desenvolvimento, reconstrução, teste, produção, operação e manutenção do projeto. A reconstrução pode modificar o design e o código originais, e a operação e manutenção podem minimizar a modificação do código original, manter a pureza do código histórico e melhorar a estabilidade do sistema.
Importância do princípio de abrir e fechar:
1. O impacto do princípio de abertura e fechamento nos testes. O princípio de abertura e fechamento é manter o código de teste original ainda em execução normalmente. Precisamos apenas testar o código estendido.
2. O princípio de abertura e fechamento pode melhorar a reutilização. No design orientado a objetos, toda a lógica é composta por lógica atômica, em vez de implementar uma lógica de negócios de forma independente em uma classe. Somente dessa maneira o código pode ser reutilizado. Quanto menor a granularidade, maior a possibilidade de ser reutilizada.
3. O princípio de abertura e fechamento pode melhorar os requisitos do desenvolvimento orientado a objetos de manutenção.
Como usar o princípio de abertura e fechamento:
1. Restrições abstratas primeiro, estendem a extensão por meio de restrições de interface ou classe abstrata e não permitem métodos públicos que não existem na interface ou na 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, tente permanecer estável o máximo possível e, uma vez determinado, as modificações não são permitidas.
2. Os metadados do comportamento do módulo de controle de metadados são os dados usados para descrever o ambiente e os dados. Nos termos do leigo, são parâmetros de configuração. Os parâmetros podem ser obtidos a partir de arquivos ou de bancos de dados.
Os recipientes de mola são um exemplo típico do comportamento dos módulos de controle de metadados, e o final é a inversão do controle
3. Formulando uma Carta de Projeto. Em uma equipe, é muito importante estabelecer uma carta do projeto porque a Carta especifica acordos que todo o pessoal deve cumprir. Para projetos, os acordos são melhores que a configuração.
4. As mudanças de embalagem têm dois significados:
Primeiro, encapsular as mesmas mudanças em uma interface ou classe abstrata;
Segundo, encapsular alterações diferentes em diferentes interfaces ou classes abstratas, e não deve haver duas alterações diferentes na mesma interface ou classe abstrata.
exemplo
Aqui está um exemplo, antes de tudo, um mau exemplo:
classe GraphDiceditor {public void DrawShape (forma s) {if (s.m_type == 1) drawrecrectangle (s); else if (s.m_type == 2) drawcircle (s); } public void drawcircle (círculo r) {....} public void drawrectangle (retângulo r) {....}} classe forma {int m_type; } classe Rectangle estende a forma {Rectangle () {super.m_type = 1; }} classe Circle estende Shape {Circle () {super.m_type = 2; }}Quando queremos expandir uma forma, precisamos entender primeiro a classe Graphideditor e adicionar um novo tipo na forma de tração e adicionar uma função. Aqui está o código aprimorado:
classe graficeditor {public void DrawShape (forma s) {s.Draw (); }} classe forma {abstract void draw (); } classe retângulo estende a forma {public void draw () {// desenhe o retângulo}}
Não há necessidade de entender a lógica de desenho, colocar a implementação específica em uma subclasse.
Resumir:
1. O cumprimento dos princípios de abertura e fechamento pode melhorar a escalabilidade e a manutenção do software.
2. A maioria dos padrões de design e princípios de design são sobre a realização do princípio de abertura e fechamento.