Home >Backend Development >PHP Tutorial >Detailed introduction to factory pattern based on PHP design pattern_PHP tutorial
Factory pattern: The factory class determines which instance of the production class to create based on the parameters
Factory class: A method class specifically used to create other objects. That is, allocate on demand, pass in parameters for selection, and return the specific class
Function: encapsulation of object creation, simplifying the operation of creating objects, that is, calling a method of the factory class to get the required class
Supplement:
1. Main roles: Abstract Product (Product), Concrete Product (Concrete Product), Abstract Factory Role (Creator)
2. Advantages and Disadvantages
Advantages: The factory method pattern allows the system to introduce new products without modifying the factory role
Disadvantages: Customers may have to create a Creator subclass just to create a specific Concrete Product object
3. Applicability
When a class does not know the objects it must create
When a class wants its subclasses to specify the objects it creates
When a class delegates the responsibility for object creation to one of multiple helper subclasses and wants you to localize the information about which helper subclass is the delegate
public function __construct($A,$B){
$this->_NumberA = $A;
$this->_NumberB = $B;
}
public function setNumber($A,$B){
$this->_NumberA = $A;
$this->_NumberB = $B;
}
public function clearResult(){
$this->_Result = 0;
}
abstract protected function getResult();
}
/ /Operation class
class OperationAdd extends Operation{
public function getResult(){
$this->_Result = $this->_NumbserA + $this->_NumberB;
return $this ->_Result;
}
}
class OperationSub extends Operation{
public function getResult(){
$this->_Result = $this->_NumberA - $this->_NumberB;
return $this->_Result; 🎜> private static $obj;
public static function CreationOperation($type,$A,$B){
switch($type){
case '+':
self: :$obj = new OperationAdd($A,$B);
break;
case '-':
self::$obj = new OperationSub($A,$B);
break ;
… … echo $obj-> getResult();
?>