Open / Closed Principle

Os objetos devem estar abertos para extensão, mas fechados para modificação.

  1. Introdução:
    • Em 1988, Bertrand Meyer definiu o Princípio Aberto/Fechado (OCP).
    • A definição original de Meyer enfatiza que um módulo deve ser aberto para extensão, mas fechado para modificação.
  2. Essência do Princípio:
    • A ideia central é que você deve ser capaz de estender o comportamento de um sistema sem ter que modificar esse sistema.
    • Se todos os módulos de um sistema pudessem ser estendidos sem modificação, novos recursos poderiam ser adicionados apenas escrevendo novo código.
  3. Benefícios:
    • O código antigo não precisaria ser recompilado ou redistribuído.
    • Novos recursos seriam adicionados apenas com a implantação de novo código, talvez em um novo jar, dll ou gem.
    • Os jars, dlls ou gems deveriam ser recursos isoláveis.
  4. É Absurdo?:
    • À primeira vista, o OCP pode parecer sem sentido, pois muitos sistemas não permitem a adição de novos recursos de forma isolada.
    • No entanto, ferramentas como Eclipse, IntelliJ, Visual Studio e outros provam que sistemas abertos/fechados são possíveis e poderosos através de plugins.
  5. Arquitetura de Plugin:
    • Sistemas como Vim, Emacs, Minecraft e Eclipse são baseados em plugins.
    • A ideia é que você possa conectar e desconectar recursos, interfaces e outros componentes.
    • A arquitetura de plugin permite uma flexibilidade incrível, permitindo a adição ou remoção de interfaces, bancos de dados, frameworks e muito mais.
  6. Conclusão:
    • Apesar das críticas, o OCP é fundamental e as arquiteturas de plugin mostram seu valor.
    • Uma forte arquitetura de plugin é provavelmente o aspecto mais importante dos futuros sistemas de software.

Referências