Design Patterns ou Padrões de Projeto são soluções testadas em diversos problemas pertencentes ao paradigma orientado a objetos.
Não podem ser descritas como novas soluções, porém pode-se dizer que são comuns e recorrentes em diversas problemáticas.
Tópicos que você vai ver
1. Origem dos Padrões de Projeto
2. Conceitos Básicos para a aplicação de Design Patterns
3. Por que aprender Padrões de Projeto
Origem dos Padrões de Projeto
Após o paradigma estruturado, surgiu a programação orientada a objetos.
Dentro deste paradigma era possível estruturar os dados, abstrair informações e dar manutenção ao código de forma mais ágil e menos complexa.
Foi por causa do livro Design Patterns: Elements of Reusable Objetc Oriented Software, que os padrões de projeto se popularizaram.
Este livro, também conhecido como GOF ou Gang of Four, descreve soluções relacionadas ao paradigma orientado a objetos.
Todo padrão de projeto tem o seu lado bom e o ruim. Não é porque se trata de uma solução testada que pode ser aplicado sem análise em qualquer código.
Para aplicar um padrão de projeto, é preciso analisar a estrutura do código e saber se é viável ou não.
Somente utilizar um padrão de projeto não é garantia de que o código tenha coesão.
É necessário saber usar, pois, cada padrão possui uma finalidade específica.
Leia também
Programação Orientada a Objetos para iniciantes
Como ser um bom programador: excelentes dicas para você se aperfeiçoar
HTML para iniciantes: desenvolva em poucos minutos
O que é algoritmo? Aprenda de uma vez por todas
Banco de Dados: Conceito de modelagem para iniciantes
Conceitos básicos para a aplicação de Design Patterns
A programação orientada a objetos trabalha por meio de classes e objetos. Portanto, uma classe define a criação de um tipo e esse tipo pode ser instanciado, criando assim um objeto.
A classe abstrai um conceito da realidade e o objeto se torna a concretização dessa abstração.
Ou seja, um objeto é o concreto e a classe é a abstração.
Uma classe tem em si, estado e comportamento, que são os seus atributos e métodos.
Então, podemos dizer que, se uma classe tem uma determinada característica, um objeto terá um valor para esta característica.
Da mesma forma, uma classe possui um comportamento e o objeto executa esse comportamento.
Herança
A herança deriva exclusivamente da programação orientada a objetos. Ela permite que existam abstrações em diversos níveis.
Quando uma classe estende outra classe, dá-se um contrato entre elas.
A subclasse herda toda a estrutura de dados da superclasse, assim como o seu comportamento também.
Encapsulamento
Serve para garantir que as informações tratadas no código sejam protegidas e ocultadas ao usuário final.
Como exemplo do encapsulamento, há os métodos getters e setters, que acessam e modificam um objeto.
Interface
Uma interface é como um contrato entre duas ou mais classes.
A classe que implementa uma interface,obrigatoriamente tem de implementar os seus métodos.
Quando usar classe abstrata e interface
A principal diferença entre as duas classes é que a classe abstrata pode implementar os seus métodos e ter atributos, enquanto a interface não.
Assim, quando a abstração for um comportamento, uma ação que uma classe tenha de fazer, cria-se uma interface.Quando for um conceito apenas, classe abstrata.
Por que aprender padrões de projeto?
Ao conhecermos as soluções apresentadas pelos padrões de projeto, podemos aplica-las aos códigos quando necessário, tornando-os coesos e equilibrados, de acordo com os requisitos necessários.