mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-05-15 10:55:48 +02:00
50 lines
1.0 KiB
PHP
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
|
|
{
|
|
|
|
}
|