Estou aprendendo sobre o Princípio da Inversão de Dependências. Diz que:
Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.
Por um tempo, tentei entender o que significa que os componentes de alto nível e os de baixo nível dependem das abstrações e são dependentes delas .
Suponho que ambos devam depender da mesma abstração de alguma forma. Por favor, corrija-me se isso estiver errado.
Eu cheguei a alguma conclusão sobre o que isso significa. Confirme se está correto.
" Os componentes de alto nível dependem da abstração" - Significado:
Os componentes de alto nível conversam com uma interface para se comunicar com os componentes de baixo nível , em vez de se comunicar diretamente com os componentes de baixo nível de concreto. Os componentes de baixo nível implementam essa interface.
" Os componentes de baixo nível dependem da abstração" - Significado:
Os componentes de baixo nível são definidos e projetados nos termos da interface. Eles são projetados para caber na interface . Eles dependem da interface, da maneira que a interface define como eles são projetados. (Geralmente, as classes de baixo nível implementam essa interface).
Dessa forma, os componentes de alto nível e os de baixo nível são 'dependentes da abstração', mas de maneiras diferentes.
Essa é uma boa compreensão?
fonte
Respostas:
Sua compreensão do conceito é muito precisa.
Apontar exceções, casos especiais ou minúcias filosóficas agora mesmo o desviaria da sua atual clareza de conceito.
Sugiro, porém, que você use símbolos UML:
fonte
Sim, muitas pessoas pensam na construção de software como na construção civil. O banco de dados é a "base" em que o DAL fica em cima dele, a camada de negócios fica no DAL, a interface do usuário fica na camada de negócios ...
Em vez disso, pense nisso como um celular pendurado. Onde as "camadas" ficam penduradas em uma âncora comum. A interface do usuário e a camada de negócios são suspensas na interface de negócios, a camada de negócios e o DAL são suspensos na interface do DAL, o DAL e o banco de dados se conectam através da interface do banco de dados.
fonte