mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-07-31 20:20:15 +02:00
added abstract factory and factory pattern
This commit is contained in:
40
AbstractFactory/AbstractFactory.php
Normal file
40
AbstractFactory/AbstractFactory.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace DesignPatterns;
|
||||
|
||||
/**
|
||||
* Abstract Factory pattern
|
||||
*
|
||||
* Purpose:
|
||||
* to create series of related or dependant objects without specifying their concrete classes,
|
||||
* usually created classes would all implement the same interface
|
||||
*
|
||||
* Examples:
|
||||
* - A Factory to create media in a CMS: classes would be text, audio, video, picture
|
||||
* - SQL Factory (types are all strings with SQL, but they vary in detail (tables, fields, etc.))
|
||||
* - Zend Framework: Zend_Form::createElement() creates form elements, but you could also call new TextElement() or so
|
||||
*
|
||||
*/
|
||||
abstract class AbstractFactory
|
||||
{
|
||||
/**
|
||||
* @static
|
||||
* @param string $content
|
||||
* @return AbstractFactory\Text
|
||||
*/
|
||||
public static function createText($content)
|
||||
{
|
||||
return new AbstractFactory\Text($content);
|
||||
}
|
||||
|
||||
/**
|
||||
* @static
|
||||
* @param string $path
|
||||
* @param string $name
|
||||
* @return AbstractFactory\Picture
|
||||
*/
|
||||
public static function createPicture($path, $name = '')
|
||||
{
|
||||
return new AbstractFactory\Picture($path, $name);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user