O que são design patterns?

Design patterns não têm segredos: tratam-se de soluções bem experimentadas e documentadas para problemas comuns. São as boas soluções para problemas que sempre enfrentamos. E esse conceito não está relacionado apenas à TI (aliás, nem começou na TI, começou na engenharia).

Se observarmos, até na natureza existem tais conceitos de patterns. Tomemos como exemplo o vôo das aves. Existe um problema que é o desgaste que uma ave tem ao voar longas distâncias, geralmente em rotas migratórias. Para resolver esse problema, os pássaros voam em grupos, em uma formação “V”: dessa forma, as aves que estão atrás da primeira se aproveitam do vácuo gerado pelo vôo da líder, diminuindo o atrito com o ar e conseqüentemente diminuindo a energia gasta por elas. Quando o primeiro pássaro se cansa, ele vai para o final do grupo, e é substituído. Com isso, o grupo consegue uma autonomia de vôo em média 70% melhor do que se estivessem sozinhos. Este padrão de vôo é utilizado por aeronaves militares e também é muito comum em shows aéreos.

Gansos selvagens

Thunderbolt III

Voltando à TI, temos alguns patterns famosos da Orientação à Objetos, que foram descritos no “Design Patterns Elements of Reusable Object-Oriented Software”. São eles:

  • Creacionais: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
  • Estruturais: Adapter, Bridge, Composite, Decorator, Facade, Flyweight e Proxy.
  • Comportamentais: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.

Vale muito a pena conhecer esses padrões, pois eles são muito úteis quando encaramos determinados problemas. Os patterns que eu marquei em negrito foram os que eu descrevi em artigos da .NET Magazine, que já foram lançados ou que serão lançados em breve.

[]’s

Comentários

Postagens mais visitadas deste blog

Trocando configurações padrão do Live TIM

Uma proposta de Clean Architecure com Modelo de Atores

Testes automatizados em sistemas autenticados com certificados digitais, usando Selenium e PhantomJS