Back to Factory Method description

In the Factory Method Pattern, a factory method defines what functions must be available in the non-abstract or concrete factory. These functions must be able to create objects that are extensions of a specific class. Which exact subclass is created will depend on the value of a parameter passed to the function.

In this example we have a factory method, AbstractFactoryMethod, that specifies the function, makePHPBook($param).

The concrete class OReillyFactoryMethod factory extends AbstractFactoryMethod, and can create the correct the extension of the AbstractPHPBook class for a given value of $param.

author = “Rasmus Lerdorf and Kevin Tatroe”; $this->title = “Programming PHP”; self::$oddOrEven = “even”; } else { $this->author = “David Sklar and Adam Trachtenberg”; $this->title = “PHP Cookbook”; self::$oddOrEven = “odd”; } } function getAuthor() {return $this->author;} function getTitle() {return $this->title;}}class SamsPHPBook extends AbstractPHPBook { private $author; private $title; function __construct() { //alternate randomly between 2 books mt_srand((double)microtime()*10000000); $rand_num = mt_rand(0,1); if (1 > $rand_num) { $this->author = “George Schlossnagle”; $this->title = “Advanced PHP Programming”; } else { $this->author = “Christian Wenz”; $this->title = “PHP Phrasebook”; } } function getAuthor() {return $this->author;} function getTitle() {return $this->title;}}class VisualQuickstartPHPBook extends AbstractPHPBook { private $author; private $title; function __construct() { $this->author = “Larry Ullman”; $this->title = “PHP for the World Wide Web”; } function getAuthor() {return $this->author;} function getTitle() {return $this->title;}} writeln(“START TESTING FACTORY METHOD PATTERN”); writeln(“”); writeln(“testing OReillyFactoryMethod”); $factoryMethodInstance = new OReillyFactoryMethod; testFactoryMethod($factoryMethodInstance); writeln(“”); writeln(“testing SamsFactoryMethod”); $factoryMethodInstance = new SamsFactoryMethod; testFactoryMethod($factoryMethodInstance); writeln(“”); writeln(“END TESTING FACTORY METHOD PATTERN”); writeln(“”); function testFactoryMethod($factoryMethodInstance) { $phpUs = $factoryMethodInstance->makePHPBook(“us”); writeln(“us php Author: “.$phpUs->getAuthor()); writeln(“us php Title: “.$phpUs->getTitle()); $phpUs = $factoryMethodInstance->makePHPBook(“other”); writeln(“other php Author: “.$phpUs->getAuthor()); writeln(“other php Title: “.$phpUs->getTitle()); $phpUs = $factoryMethodInstance->makePHPBook(“otherother”); writeln(“otherother php Author: “.$phpUs->getAuthor()); writeln(“otherother php Title: “.$phpUs->getTitle()); } function writeln($line_in) { echo $line_in.”“; }?>OutputSTART TESTING FACTORY METHOD PATTERNtesting OReillyFactoryMethodus php Author: Rasmus Lerdorf and Kevin Tatroeus php Title: Programming PHPother php Author: George Schlossnagleother php Title: Advanced PHP Programmingotherother php Author: David Sklar and Adam Trachtenbergotherother php Title: PHP Cookbooktesting SamsFactoryMethodus php Author: Christian Wenzus php Title: PHP Phrasebookother php Author: Rasmus Lerdorf and Kevin Tatroeother php Title: Programming PHPotherother php Author: Larry Ullmanotherother php Title: PHP for the World Wide WebEND TESTING FACTORY METHOD PATTERN

Đang xem: Design patterns in php: using factories


Support our free website and own the eBook!

22 design patterns and 8 principles explained in depth 406 well-structured, easy to read, jargon-free pages 228 clear and helpful illustrations and diagrams An archive with code examples in 4 languages All devices supported: EPUB/MOBI/PDF formats Learn more…

Java Factory Method in Java
C++ Factory Method in C++: Before and after Factory Method in C++
PHP Factory Method in PHP
Delphi Factory Method in Delphi
Python Factory Method in Python

More info, diagrams and examples of the Factory Method design pattern you can find on our new partner resource Refactoring.Guru.

Xem thêm: Submit A Form Without Page Refresh Using Jquery, Jquery Ajax Submit A Multipart Form Data


Hey, check out our new ebook on design patterns. The book covers 22 patterns and 8 design principles, all supplied with code examples and illustrations. Clear, short and fun!

Oh, and it is on sale right now.



Xem thêm: Cách Tải Game Songoku 3 Game Songoku Đấu Võ Trên Windows, Cách Tải Game Songoku Trên Máy Tính

Premium Stuff Design Patterns Creational patterns Structural patterns Behavioral patterns AntiPatterns Software Development AntiPatterns Software Architecture AntiPatterns Project Management AntiPatterns Refactoring Code Smells Bloaters Object-Orientation Abusers Change Preventers Dispensables Couplers Other Smells Refactoring techniques Composing Methods Moving Features between Objects Organizing Data Simplifying Conditional Expressions Simplifying Method Calls Dealing with Generalisation UML Basic Principles and Background Modeling Business Systems Modeling IT Systems Modeling for System Integration

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *