added abstract factory and factory pattern

This commit is contained in:
Dominik Liebler
2011-08-21 16:03:10 +02:00
parent 9569c1e693
commit afb62569d3
5 changed files with 155 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
<?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 Format
*/
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
{
}