4. “Se você está tendo um problema
no desenvolvimento, você não
está sozinho. Outro já passou
pelo mesmo problema e já deve
ter solução para o problema.
10. × Classes devem poder extender seu
comportamento, facilmente, seja por herança,
interface ou composição.
× Temos de ter boas abstrações.
Open Closed
12. Liskov Substitution
× Herança é bom.
× Cuidado com a herança.
× Projeto por contrato.
× Estabelece regras para uso
× Pré condições - não podem ser mais fortes
que a super-classe.
× Pós condições - não podem ser
enfraquecidas
Eventualmente desenvolvedor escolhe herança
14. Liskov Substitution
Exemplo de problemas com o uso de herança:
× Properties não deveria ser uma Hashtable, pois tem o put(object,
object) se for usado pode causar problemas.
× Vector é sincronizado, todas as stacks deveriam ser
sincronizadas?
15. Liskov Substitution
Exemplo de problemas com o uso de herança:
× CEP você busca do correios
× CEP deveria pode salvar ou
remover?
21. Padrões de Projeto - Principios de design
Princípios
Dependency Injection
Inversion of Control
22. Inversion of control
× Princípio de Hollywood, “Não ligue para nós, nós ligamos para
você.”
× Controle das chamadas é invertido não é determinado pelo
programador.
× Controle é delegado a uma infraestrutura, container.
31. Dependency Injection
Melhor Padrão
× Injeção no construtor, good citizen (bom cidadão)
× Tudo que a classe precisa é passado no construtor.
× Garantia de inicialização somente quando atendido as
dependências.
Nem tudo são flores
× Não são todos os frameworks de IOC/DI que implementam
32. Padrões de Projeto
× Solução para um problema frequente
× Reusavéis
Padrões de projeto dizem respeito a como
organizar o código.
33. “GOF - Gang of
Four”
Padrões a serem conhecidos
34. Padrões de Projeto - Categorias
Criacionais
Factory Method
Abstract Method
Builder
Prototype
Singleton
Estruturais
Composite
Adapter
Bridge
Decorator
Facade
Proxy
Flyweight
Comportamentais
Strategy
Template Method
Observer
Mediator
Command
Chain of Responsability
State
Visitor
...
35. Padrões de Projeto - Categorias
Criacionais
Factory Method
Abstract Method
Builder
Prototype
Singleton
Estruturais
Composite
Adapter
Bridge
Decorator
Facade
Proxy
Flyweight
Comportamentais
Strategy
Template Method
Observer
Mediator
Command
Chain of Responsability
State
Visitor
...