VIPER (View, Interactor, Apresentador, Entidade e Router) é um padrão de design para desenvolvimento de software que desenvolve código modular baseado em arquitetura de design limpa. Os módulos no VIPER são orientados ao protocolo e cada função, entrada e saída de propriedade é realizada por meio de specific sets of communication rules.
VIPER é frequentemente usado para desenvolver aplicações para smartphones e é muito usado no iOS juntamente com a Swift, a linguagem de programação da Apple. VIPER é baseado nos princípios de design SOLID, especificamente o princípio de responsabilidade única.
As palavras representadas na sigla VIPER anotam os tipos de módulos no padrão de design:
- >strong>View (também conhecido como o controlador de visualização): Ambos exibem informações para o usuário e detectam a interação do usuário. O Apresentador é o único módulo com o qual o módulo View tem contato.
- Interactor: Manipula entidades ou modelos e busca e armazena dados.
- Presenter: Contém a interface do usuário e prepara os dados para apresentação. O Apresentador contacta o Interactor para pedidos de dados, a Vista para apresentar os dados preparados ao utilizador e o Router para entregar os objectos.>
- > forte>>Entity: Os modelos de dados que são manipulados pelo Interactor.
- >Router>/strong> (também conhecido como wireframe): Manipula a navegação no módulo ou aplicação. Cria a View e liga o Presenter para atuar como saída para o Interactor. Contata o Apresentador para rotear pedidos.
A abstração do código nas camadas de entidades, lógica de programa e dispositivos e interfaces externas é um ponto comum visto em VIPER e em arquiteturas de design limpo em geral.