Design Patterns? Ahn?
Comecei recentemente a estudar mais afundo Design Patterns e confesso que para mim são muitos e realmente fica difícil saber exatamente quando usar um ou quando usar outro
Design Patterns são soluções para problemas que encontramos durante o desenvolvimento de software que foram testadas e validadas. Esse padrões nos ajudam no entendimento do código e podem agilizar o desenvolvimento.
Essas práticas começaram a ficar conhecidas após o livro
Design Patterns: Elements of Reusable Object-Oriented Software em 1994.
Os Design Patterns são classificados nos seguintes tipos:
Creational Patterns
Os padrões desse tipo são sobre instanciação de classes, ou seja, é voltado para criação de objetos enquanto ocultam a lógica de criação. Podem ser divididos em padrões de criação de classes e padrões de criação de objetos e buscam diferentes formas de cumprir o mesmo propósito. Dentro desse tipo temos os seguintes padrões:
- Abstract Factory
- Builder
- Factory Method
- Object Pool
- Prototype
- Singleton
Structural Patterns
Já os padrões desse tipo são padrões de design e tem como objetivo encontrar formas mais simples de realizar relacionamento entre entidades, entre eles, criação de classes que usam herança para compor interfaces e definição de maneiras de compor objetos. Diferente do Creational Patterns, neste cada pattern tem um propósito diferente. Dentro desse tipo temos os seguintes padrões:
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Private Class Data
- Proxy
Behavioral Patterns
Como o nome já diz, padrões desse tipo exploram a parte mais comportamental, ou seja, a forma como os objetos interagem e dividem responsabilidades entre si. Este descreve como objetos e classes diferentes enviam mensagens uns aos outros e como as etapas de uma tarefa são divididas entre objetos diferentes. Dentro desse tipo temos os seguintes padrões:
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Null Object
- Observer
- State
- Strategy
- Template method
- Visitor
Resumindo…
Os Creational Patterns são para a fase de criação de objetos, já os Structural Patterns são voltados para os relacionamentos entre entidades, e, por fim, os Behavioral Patterns são formas de iteração entre objetos e classe.
Teremos outros artigos explicando cada um desses padrões, aguarde! :)