Vou começar hoje uma série de post’s, voltadas para os programadores, vou passar alguns padrões de projetos a serem utilizados.
Mas afinal o que são padrões de projeto?
Padrões de Projetos ou Design Patterns, são características arquiteturais de software, que ao longo do tempo se tornaram soluções de problemas. Ou seja, você tem um problema, muitas vezes outras pessoas já passaram por ele, logo, alguém já resolveu ele. Com isso, com problemas freqüentes de arquitetura na programação que os padrões de projetos surgiram.
Eles são, soluções muito boas, que várias pessoas ajudaram a pensar na melhor solução, para problemas existentes.
Bom mas chega desse papo, deixa um pouco mais da história, para um próximo post…
Vamos por a mão na massa, opa, massa não, pois dessa vez não é CakePHP. Bom chega de piadinhas sem graça, vamos ao primeiro padrão de projeto a ser apresentado.
É ele o Singleton.
Ao que se refere o Singleton, o seu nome é bem sugestivo, Singleton é aquele padrão que garante apenas 1 instância de 1 classe, ou seja ele garante que após instanciar uma vez a classe, você sempre irá estar usando o mesmo objeto.
Hmmm, legal mas quando usar???
Em todos os lugares, onde se precisa garantir uma instancia de uma classe, ou seja, por exemplo 1 log de dados, onde apenas um objeto da aplicação é responsável pelo controle dos log’s. Outro exemplo, é uma conexão de banco de dados, que no caso seja necessário garantir sempre a mesma conexão. Entre outros exemplos.
Bom vamos ao exemplo da implementação, em PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| <?php
class Singleton {
public static $instance; //atributo responsável por retornar a instancia da classe.
public static $cont; //atributo que serve apenas para contar quantas vezes a classe foi chamada.
/**
* Método construtor responsável por criar a página, é declarado como privado para garantiar,
* que apenas a classe Singleton chame ele!
*/
private function __construct() {
echo "<h1>Sou sempre o mesmo, com a mesma instancia!</h1>
"; //Texto para mostrar quando ocorre a instancia e comprovar que só ocorre uma vez!
}
/*
* Método singleton, responsável por ser o construtor da classe, por ser abstrato e público,
* é possível chamar ele sem termos o objeto da classe Singleton;
*/
public static function singleton() {
//Verifica se o atributo $instance já foi setado, caso não faz a instancia dele
if (!isset(self::$instance)) {
//Criamos o objeto e alocamos ele para o atributo self::$instance
self::$instance = new Singleton();
}
//Código para mostrar quantas instancias requiridas da classe tivemos, e que é sempre o mesmo objeto
self::$cont++;
echo "e fui chamado ", self::$cont ," vezes.";
//Retorna a instancia da classe!
return self::$instance;
}
}
//5 chamadas do objeto singleton
Singleton::singleton();
Singleton::singleton();
Singleton::singleton();
Singleton::singleton();
Singleton::singleton();
?> |
Acho que os comentários estão explicando bem o funcionamento, mas vamos tentar explicar um pouco mais, se temos que garantir apenas 1 objeto, não podemos ter o método construtuor liberado para novas instancias, logo criamos um novo método singleton, este passa a ser o responsável por criar um novo objeto, caso seja a preimeira instancia ou retornar o objeto que já foi instanciado.
Bom por hoje é isso, vou continuar a explicar em PHP alguns Designer Patterns.