DesignPatternsPHP/FactoryMethod/FactoryMethod.php
2013-05-09 10:11:42 +02:00

50 lines
1.0 KiB
PHP

<?php
namespace DesignPatterns;
/**
* Factory Method pattern
*
* Purpose:
* similar to the AbstractFactory, this pattern is used to create series of related or dependant objects.
* The difference between this and the abstract factory pattern is that the factory method pattern uses just one static
* method to create all types of objects it can create. It is usually named "factory" or "build".
*
* Examples:
* - Zend Framework: Zend_Cache_Backend or _Frontend use a factory method create cache backends or frontends
*
*/
class FactoryMethod
{
/**
* the parametrized function to get create an instance
*
* @static
* @return Formatter
*/
public static function factory($type)
{
$className = 'Format' . ucfirst($type);
if ( ! class_exists($className)) {
throw new Exception('Missing format class.');
}
return new $className();
}
}
interface Formatter
{
}
class FormatString implements Formatter
{
}
class FormatNumber implements Formatter
{
}