Design Patterns In Php: Using Factories

Back lớn 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 khổng lồ 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, & 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 & Kevin Tatroeus php Title: Programming PHPother php Author: George Schlossnagleother php Title: Advanced PHP Programmingotherother php Author: David Sklar và 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

Bạn đang xem: Design patterns in php: using factories


Support our không lấy phí 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 & 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, kiểm tra out our new ebook on design patterns. The book covers 22 patterns và 8 thiết kế principles, all supplied with code examples and illustrations. Clear, short and fun!

Oh, và it is on sale right now.



Premium Stuff thiết kế 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