Home > Backend Development > PHP Tutorial > php factory mode

php factory mode

不言
Release: 2023-03-23 18:40:01
Original
1359 people have browsed it

  1. This article introduces the factory mode of PHP. Now I share it with you. Friends in need can refer to it

  2. <?php  
    /** 
     * 基本工厂模式 
     * */  
    class User {   
        private $username;   
        public function __construct($username) {   
            $this->username = $username;   
        }   
          
        public function getUser() {   
            return $this->username;   
        }   
    }  
      
    class userFactory {   
        static public function createUser() {   
            return new User(&#39;Jack&#39;);   
        }   
    }  
      
    $user = userFactory::createUser();echo $user->getUser();  
      
    /** 
     *简单工厂模式 
     * */  
    interface userProperties {  
        function getUsername();  
        function getGender();  
        function getJob();  
    }  
    class User implements userProperties{  
        private $username;  
        private $gender;  
        private $job;  
        public function __construct($username, $gender, $job) {  
            $this->username = $username;  
            $this->gender = $gender;  
            $this->job = $job;  
        }  
      
        public function getUsername() {  
            return $this->username;  
        }  
      
        public function getGender() {  
            return $this->gender;  
        }  
      
        public function getJob() {  
            return $this->job;  
        }  
    }  
      
    class userFactory {  
        static public function createUser($properties = []) {  
            return new User($properties[&#39;username&#39;], $properties[&#39;gender&#39;], $properties[&#39;job&#39;]);  
        }  
    }  
      
    $employers = [  
        [&#39;username&#39; => &#39;Jack&#39;, &#39;gender&#39; => &#39;male&#39;, &#39;job&#39; => &#39;coder&#39;],  
        [&#39;username&#39; => &#39;Marry&#39;, &#39;gender&#39; => &#39;female&#39;, &#39;job&#39; => &#39;designer&#39;],  
        ];  
    $user = userFactory::createUser($employers[0]);  
    echo $user->getUsername();  
      
    /** 
     * 工厂方法模式 
     **/  
    interface userProperties {  
        function getUsername();  
        function getGender();  
        function getJob();  
    }  
      
    interface createUser {  
        function create($properties);  
    }  
      
    class User implements userProperties{  
        private $username;  
        private $gender;  
        private $job;  
        public function __construct($username, $gender, $job) {  
            $this->username = $username;  
            $this->gender = $gender;  
            $this->job = $job;  
        }  
      
        public function getUsername() {  
            return $this->username;  
        }  
      
        public function getGender() {  
            return $this->gender;  
        }  
      
        public function getJob() {  
            return $this->job;  
        }  
    }  
      
    class userFactory {  
        private $user;  
        public function __construct($properties = []) {  
            $this->user =  new User($properties[&#39;username&#39;], $properties[&#39;gender&#39;], $properties[&#39;job&#39;]);  
        }  
      
        public function getUser() {  
            return $this->user;  
        }  
    }  
      
    class FactoryMan implements createUser {  
        function create($properties) {  
            return new userFactory($properties);   
        }  
    }   
      
    class FactoryWoman implements createUser {  
        function create($properties) {  
            return new userFactory($properties);  
        }  
    }  
      
    class clientUser {  
        static public function getClient($properties) {  
            $fac = new FactoryMan;  
            $man = $fac->create($properties);  
            echo $man->getUser()->getUsername();  
        }  
    }  
      
    $employers = [  
        [&#39;username&#39; => &#39;Jack&#39;, &#39;gender&#39; => &#39;male&#39;, &#39;job&#39; => &#39;coder&#39;],  
        [&#39;username&#39; => &#39;Marry&#39;, &#39;gender&#39; => &#39;female&#39;, &#39;job&#39; => &#39;designer&#39;],  
        ];  
    $user = clientUser::getClient($employers[0]);  
      
    /** 
     * 抽象工厂模式 
     * */  
      
    interface userProperties {  
        function getUsername();  
        function getGender();  
        function getJob();  
    }  
      
    interface createUser { //将对象的创建抽象成一个接口  
        function createOpen($properties);//内向创建  
        function createIntro($properties);//外向创建  
    }  
      
    class User implements userProperties{  
        private $username;  
        private $gender;  
        private $job;  
        public function __construct($username, $gender, $job) {  
            $this->username = $username;  
            $this->gender = $gender;  
            $this->job = $job;  
        }  
      
        public function getUsername() {  
            return $this->username;  
        }  
      
        public function getGender() {  
            return $this->gender;  
        }  
      
        public function getJob() {  
            return $this->job;  
        }  
    }  
      
    class userFactory {  
        private $user;  
        public function __construct($properties = []) {  
            $this->user =  new User($properties[&#39;username&#39;], $properties[&#39;gender&#39;], $properties[&#39;job&#39;]);  
        }  
      
        public function getUser() {  
            return $this->user;  
        }  
    }  
      
    class FactoryMan implements createUser {  
        function createOpen($properties) {  
            return new userFactory($properties);   
        }  
      
        function createIntro($properties) {  
            return new userFactory($properties);   
        }  
    }   
      
    class FactoryWoman implements createUser {  
        function createOpen($properties) {  
            return new userFactory($properties);  
        }  
      
        function createIntro($properties) {  
            return new userFactory($properties);  
        }  
    }  
      
    class clientUser {  
        static public function getClient($properties) {  
            $fac = new FactoryMan;  
            $man = $fac->createOpen($properties);  
            echo $man->getUser()->getUsername();  
        }  
    }  
      
    $employers = [  
        [&#39;username&#39; => &#39;Jack&#39;, &#39;gender&#39; => &#39;male&#39;, &#39;job&#39; => &#39;coder&#39;],  
        [&#39;username&#39; => &#39;Marry&#39;, &#39;gender&#39; => &#39;female&#39;, &#39;job&#39; => &#39;designer&#39;],  
        ];  
    $user = clientUser::getClient($employers[0]);
    Copy after login

Related recommendations:

php pattern design singleton pattern

php pattern design adapter pattern

The above is the detailed content of php factory mode. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template