Programação Especialista

Artigos de Programação em Geral

Design Pattern - FACTORY

, , , ,

O Design Pattern Factory nos fornece uma interface para criação de objetos relacionados ou dependentes.
Para criarmos um objeto no PHP utilizamos o seguinte comando: $pessoa = new Pessoa;
Porém nosso sistema fica extremamente inflexível, tendo só um tipo de objeto atuando no sistema.
Para darmos a flexibilidade de criação de objetos para o nosso sistema utilizamos o Factory.

Criando classes do sistema:
<?php

class Pessoa{
	public $nome;
	public $endereco;
	public $telefone;
}

class Aluno extends Pessoa{
	public $matricula;
	public $_materias;
}


class Professor extends Pessoa{
	public $matricula;
	public $_disciplinas;
}
?> 

Acima temos as classes que irão atuar no sistema, de um modo de desenvolvimento antigo, para cada necessidade iriamos instanciar as classes, porém criaremos uma classe para intermediar de um modo dinâmico a criação das nossas classes:
<?php
class factoryConstruct{
	static function instanciar($tipo){
		switch($tipo){
			case 'pessoa':
			return new Pessoa;
			break;

			case 'aluno':
			return new Aluno;
			break;

			case 'professor':
			return new Professor;
			break;
		}
	}

}
?>


Com isso, qualquer classe que estiver no Switch/Case poderá ser instanciada de acordo com um parâmetro no método, assim evitando que sejam instanciadas de um modo inflexível, abrindo também ate espaço para o tratamento destes objetos instanciados com o SINGLETON, deixando seu sistema ainda mais flexível e bem desenvolvido:

<?php
$aluno = factoryConstruct::instanciar('aluno');
$professor = factoryConstruct::instanciar('professor');
$pessoa = factoryConstruct::instanciar('pessoa');
?>

Criando uma classe comum para seu projeto - P2Colocando marca d água em imagens zipadas

Comments

messala Monday, March 16, 2009 6:57:45 PM

Cara, ótimas sugestões nestes seus artigos! Parabéns!

Apenas brinco com PHP por enquanto, mas já havia reparado que o PHP5 abriu um leque ainda maior de coisas 'legais' (e confiáveis) que podemos fazer.

E vlw pela AULA sobre como usar o NuSOAP. =]

Bom trabalho!

Write a comment

New comments have been disabled for this post.