[Resolvido] Singleton e Factory - Orientação a Objetos
Olá pessoal, agradeço o acompanhamento nesta jornada.
Bom, lendo sobre os desgin Patterns consegui implementar, não a classe de conexão a banco de dados, mas sim uma forma "Orientada', se tudo estiver correto, de se chamar a classe e permanecer apenas com uma instancia do objeto, mesmo que ela seja requerida em multiplas chamadas.
Pensei em fazer classes abastratas ou ate interfaces para definir os metodos que as classes de drives, "mysql e postgres', deveriam ter mas não foi possivel exnteder a classe mysql a mysqli assim optei por não implenta-las com interface o classes abstratas, esta correto?
// responsavel por fazer os includes informando o nome do drive
class ImplementaDb
{
// Método Factory parametrizado
public static function GetDrive($type)
{
if (include_once $type.'/'.$type.'.class.php')
{
return $c = eval($type."::SetConexao();");
}
else
{
throw new Exception ('Driver não encontrado');
}
}
}
//Instanciamos o Objeto caso seja requistada outra chamada será retornado a instancia atual
$c = ImplementaDb::GetDrive('mysql');
$c = ImplementaDb::GetDrive('postgres');
//classe mysql e que possui SetConexao que verifica se o objeto ja foi iniciado
//Singleston
class mysql extends mysqli {
private static $instancia;
private function __construct(){
echo 'mysql';
}
public static function SetConexao(){
if(!isset(self::$instancia)){
self::$instancia = new mysql;
}
return self::$instancia;
}
}
//identico a classe acima verificando se o objeto ja foi requisitado
class postgres {
private static $instancia;
private function __construct(){
echo 'postgres';
}
public static function SetConexao(){
if(!isset(self::$instancia)){
self::$instancia = new postgres;
}
return self::$instancia;
}
}Bom pessoal, consegui aprender isso durante este tempo, acho que para aprender dedicação é fundamental. Não vou falar que sou o cara programando de forma procedural, consigo resolver meus problemas aqui. Mas se tratando de oop a história é outra.
Grato, pela atenção.
Jefferson.
Discussão (17)
Carregando comentários...