Archiwum dla maj 1st, 2007

01
maj
07

Fabryka abstrakcyjna w PHP

Fabryka abstrakcyjna jako wzorzec kreacyjny ( vide google -> wzorce projektowe ) jest jednym z najczęściej używanych wzorców projektowych. Pozwala on na zminimalizowanie klas i odgórne tworzenie instancji odpowiedniej w danej sytuacji klasy. Najlepszym przykładem wykorzystania tego wzorca jest napisanie interfejsu dla obsługi baz danych w serwisie pisanym w PHP.

class DataBaseFactory
{
private static $db = false;
private function __construct()
{
}
public static function getInstance( $db_name = 'MYSQL' )
{
if ( $this -> db ) return $this -> db;
$db_name = strtoupper( $db_name );
switch( $db_name )
{
case 'MYSQL': return new MySQLDataBase();
break;
case 'PGSQL': return new PgSQLDataBase();
break;
case 'MSSQL': return new MsSQLDataBase();
break;
default:
return new MySQLDataBase();
}
};

Główna klasa to fabryka. Zawiera ona metodę tzw. metodę kreacyjną, która w zależności od podanego parametru zwraca referencję do odpowiedniej klasy.
class DataBase
{
protected $conID = null;
public function __construct()
{
}
public function connectDB( $host, $user, $pass, $db_name )
{
}
public function query( $sql )
{
}
public function disconnectDB()
{
}
};

Klasa DataBase w zasadzie jest klasą abstrakcyjną, która definiuje interfejs dla klas pochodnych.
class MySQLDataBase extends DataBase
{
public function __construct()
{
}
public function connectDB( $host, $user, $pass, $db )
{
$this -> conID = mysql_connect( $host, $user, $pass );
mysql_select_db( $db );
}
public function query( $sql )
{
return mysql_query( $sql );
}
public function disconnectDB()
{
mysql_close( $conID );
$this -> conID = null;
}
};

Ostatnia z przytoczonych klas jest przykładem implementacji jednej z klas obsługujących bazę danych ( z podstawową funkcjonalnością ). Są funkcje, które powinny być aby dostęp do każdej bazy danych był jednolity.




 

maj 2007
P W Ś C P S N
« kwi   cze »
 123456
78910111213
14151617181920
21222324252627
28293031  

a

Strony