Interfaces, uma
relação de
confiança, você
está fazendo
certo?
Slide 2
Slide 2 text
*/omarkdev
2
Slide 3
Slide 3 text
3
Warning: Very high abstraction level
Slide 4
Slide 4 text
O que é
interface?
4
Slide 5
Slide 5 text
“Interface é a comunicação
entre duas partes distintas
que não são capazes de se
comunicar diretamente”
5
Slide 6
Slide 6 text
É tudo aquilo que é
exposto para alguém
6
Slide 7
Slide 7 text
7
= Interface
Slide 8
Slide 8 text
Ok, entendemos o
que é uma
interface...
8
Mas agora, temos
duas perguntas
Slide 9
Slide 9 text
1. Por que desenhar
interfaces?
2. Como desenhar
interfaces?
9
Slide 10
Slide 10 text
S.O.L.I.D.
10
Slide 11
Slide 11 text
S.O.L.I.D.
11
Slide 12
Slide 12 text
“Clientes não devem ser
forçados a depender de
interfaces que não utilizam”
12
Slide 13
Slide 13 text
13
Slide 14
Slide 14 text
Quanto mais abstrações não
utilizadas, mais instabilidade no
ponto de vista da aplicação.
Problemas em não
separar conceito
Manutenções desnecessárias.
14
Slide 15
Slide 15 text
15
Slide 16
Slide 16 text
RELAÇÃO
DE
CONFIANÇA
16
Slide 17
Slide 17 text
17
Slide 18
Slide 18 text
▪ Message é uma interface?
▪ Message é uma classe?
▪ Message é uma instância de
TelegramMessage?
18
Slide 19
Slide 19 text
▪ Message é uma interface?
▪ Message é uma classe?
▪ Message é uma instância de
TelegramMessage?
▪ Essas informações importam? Não.
19
Slide 20
Slide 20 text
Criado por
Rebecca Wirfs-Brock
Responsibility-Driven
Design
20
Slide 21
Slide 21 text
Cliente
Solicita
Contrato X
Servidor
21
Slide 22
Slide 22 text
▪ A comunicação entre cliente e servidor é descrita
por um contrato;
▪ Qualquer objeto pode agir como um cliente ou
servidor a qualquer momento;
▪ O modelo se preocupa em o que o servidor faz
para o cliente e não em como faz.
22
Slide 23
Slide 23 text
1. Por que desenhar
interfaces?
2. Como desenhar
interfaces?
23
Slide 24
Slide 24 text
24
“Para criar interfaces basta adicionar no final do nome
Interface”
Slide 25
Slide 25 text
Estamos trabalhando com
contratos, a implementação
pouco importa para o cliente.
Sufixo ou Prefixo: I,
Imp, Interface,
Contract
Descrever implementações
técnica pode induzir ao erro.
25
Slide 26
Slide 26 text
“Programe para interfaces, não
para implementações”
26
Slide 27
Slide 27 text
Criado por
Martin Fowler
Role Interface
27
Slide 28
Slide 28 text
Role Interfaces são papéis
que um objeto pode
desempenhar.
28
Slide 29
Slide 29 text
29
Slide 30
Slide 30 text
30
Slide 31
Slide 31 text
Usar adjetivos
31
Slide 32
Slide 32 text
Descrever um conjunto de
ações como qualidade.
32
Slide 33
Slide 33 text
33
Slide 34
Slide 34 text
É mais simples quando se
programa em inglês, podemos
utilizar sufixos como: “able”, “or”.
Usar adjetivos
Não é uma regra, é uma possível
abordagem.
34
Slide 35
Slide 35 text
Criado por
Alain Schlesser
Interface Naming
Convention
35
Slide 36
Slide 36 text
Várias
implementações do
mesmo conceito
O nome da interface é o conceito e as derivações
são o que tornam a implementação diferente.
1.
Slide 37
Slide 37 text
37
Slide 38
Slide 38 text
Uma implementação
aberta para extensões
O código atual fornece uma implementação de um
conceito mas que deve ser estendido para conceitos
mais especializados.
2.
Slide 39
Slide 39 text
39
Slide 40
Slide 40 text
Somente uma
implementação, sem
extensões planejadas
Atualmente o código já provêm uma implementação
de um conceito que não é necessário estender.
3.
Slide 41
Slide 41 text
41
Slide 42
Slide 42 text
Isso não significa que isso nunca
acontecerá ou será necessário no
futuro.
Sem extensões
planejadas
Evitar over-engineering.
42
Slide 43
Slide 43 text
43
Slide 44
Slide 44 text
44
Slide 45
Slide 45 text
45
Slide 46
Slide 46 text
1. Por que desenhar
interfaces?
2. Como desenhar
interfaces?
46
Slide 47
Slide 47 text
Desenhar interfaces vai
além de usar a construção
de linguagem interface.
47
Slide 48
Slide 48 text
“Suas ações se tornam seus
hábitos, seus hábitos se tornam
seus valores, seus valores se
tornam seu destino” - Gandhi
48