登录  /  注册

php的工厂模式

不言
发布: 2018-04-13 16:36:54
原创
1108人浏览过

  1. 本篇文章介绍的内容是php的工厂模式,现在分享给大家,有需要的朋友可以参考一下

  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]);
    登录后复制

相关推荐:

php模式设计之 单例模式

php模式设计之 适配器模式

以上就是php的工厂模式的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号