php / Шаблон проектирования Factory
<?php
class Example
{
// Параметризированный фабричный метод
public static function factory($type)
{
if (include_once 'Drivers/' . $type . '.php') {
$classname = 'Driver_' . $type;
return new $classname;
} else {
throw new Exception ('Драйвер не найден');
}
}
}
//Использование
interface Driver_Interface {
}
class Drivers_MYSQL_PDO implements Driver_Interface {
}
$db = Example::factory("MYSQL_PDO");
?>
Единственным уточнением может быть введение единого интерфейса для всех классов из папки 'Drivers/', а также модификатора private или protected для конструктора класса Example:
private __construct Example(){}
Взято с http://www.php.net/manual/ru/language.oop5.patterns.php
2009-01-12 15:18:32


