Você está na página 1de 2

Padrões de Projeto

Padrões de Projeto (comumente relacionados na literatura de TI como “Design


Patterns”) são soluções para problemas comuns que encontramos no desenvolvimento ou
manutenção de um software orientado a objetos. Atualmente não se concebe um processo de
desenvolvimento de software sério sem a utilização da orientação a objetos, pois esta permite
agregar qualidades importantes aos sistemas desenvolvidos sob seus paradigmas, como a
extensibilidade e a reusabilidade. Contudo, somente por estar utilizando-a, não é garantia de
obter essas qualidades. Para criar as melhores soluções é preciso seguir um processo detalhado
para obter uma análise dos requisitos, funcionais ou não funcionais, e desenvolver um projeto
que os satisfaça e que possibilite submetê-los a teste para constatar eventuais falhas, se deseja
que o projeto tenha uma arquitetura flexível para acomodar futuros problemas e requisitos sem
a necessidade da realização do re-projeto. Os padrões de projetos tornam mais fácil reutilizar
soluções e arquiteturas bem-sucedidas para construir softwares orientados a objetos de forma
flexível e fácil de manter. O uso de padrões de projeto pode reduzir a complexidade do processo
de projetar software. Além disso, o software orientado a objetos bem projetado possibilita aos
projetistas reutilizar e empregar componentes preexistentes em sistemas futuros. Existem
diferentes tipos de padrões de projetos, que visam resolver diferentes tipos de problemas.

Os padrões podem ter propósito criacional, estrutural ou comportamental. Os padrões


criacionais abstraem o processo de criação dos objetos. Os estruturais lidam com a composição
de classes ou objetos. Já os comportamentais caracterizam as maneiras pelas quais classes ou
objetos interagem e distribuem responsabilidades.

Os padrões de projeto criacionais fornecem vários mecanismos de criação de objetos,


que aumentam a flexibilidade e reutilização de código já existente. Eles ajudam a tornar um
sistema independentemente de como seus objetos são criados, compostos e representados. Um
exemplo seria o “Factory Method”, que é um padrão criacional de projeto que fornece uma
interface para criar objetos em uma superclasse, mas permite que as subclasses alterem o tipo
de objetos que serão criados. O Factory Method elimina a necessidade de colocar classes
específicas da aplicação no código.

Os padrões estruturais explicam como montar objetos e classes em estruturas maiores,


mas ainda mantendo essas estruturas flexíveis e eficientes. Eles se preocupam com a forma
como classes e objetos são compostos para formar estruturas maiores. Os de classes utilizam a
herança para compor interfaces ou implementações, e os de objeto descrevem maneiras de
compor objetos para obter novas funcionalidades. A flexibilidade obtida pela composição de
objetos provém da capacidade de mudar a composição em tempo de execução o que não é
possível com a composição estática (herança de classes). Temos como exemplo o padrão
denominado “Bridge”. O Bridge é um padrão de projeto estrutural que permite que você divida
uma classe grande ou um conjunto de classes intimamente ligadas em duas hierarquias
separadas—abstração e implementação—que podem ser desenvolvidas independentemente
umas das outras.

Os padrões comportamentais são voltados aos algoritmos e a designação de


responsabilidades entre objetos. Eles não descrevem apenas padrões de objetos ou de classes,
mas também os padrões de comunicação entre os objetos. Os padrões comportamentais de
classes utilizam a herança para distribuir o comportamento entre classes, e os padrões de
comportamento de objeto utilizam a composição de objetos em contrapartida a herança. Alguns
descrevem como grupos de objetos que cooperam para a execução de uma tarefa que não
poderia ser executada por um objeto sozinho. Um exemplo é o “Chain of Responsability”, que é
um padrão de projeto comportamental que permite que você passe pedidos por uma corrente
de handlers. Ao receber um pedido, cada handler decide se processa o pedido ou o passa adiante
para o próximo handler na corrente.

Você também pode gostar