• php 工厂模式


    1. 基本工厂
       1 class User {   
       2     private $username;   
       3     public function __construct($username) {   
       4         $this->username = $username;   
       5     }   
       6       
       7     public function getUser() {   
       8         return $this->username;   
       9     }   
      10 }  
      11   
      12 class userFactory {   
      13     static public function createUser() {   
      14         return new User('Jack');   
      15     }   
      16 }  
      17   
      18 $user = userFactory::createUser();echo $user->getUser();
    2. 简单工厂模式
      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['username'], $properties['gender'], $properties['job']);  
          }  
      }  
        
      $employers = [  
          ['username' => 'Jack', 'gender' => 'male', 'job' => 'coder'],  
          ['username' => 'Marry', 'gender' => 'female', 'job' => 'designer'],  
          ];  
      $user = userFactory::createUser($employers[0]);  
      echo $user->getUsername();  
    3. 抽象工厂模式
      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['username'], $properties['gender'], $properties['job']);  
          }  
        
          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);  
              return $man->getUser()->getUsername();  
          }  
      }  
        
      $employers = [  
          ['username' => 'Jack', 'gender' => 'male', 'job' => 'coder'],  
          ['username' => 'Marry', 'gender' => 'female', 'job' => 'designer'],  
          ];  
      $user  = clientUser::getClient($employers[0]);
      $user1 = clientUser::getClient($employers[1]);
      $user2 = clientUser::getClient($employers[0]);
      $user3 = clientUser::getClient($employers[1]);
      var_dump($user,$user1,$user2,$user3);
  • 相关阅读:
    关闭页面的Js方法
    正则
    css3颜色渐变
    HTML learning
    jquery dwn 开发学习
    前人栽树后人乘凉
    剑指offer-面试题53_2-0~n-1中缺失的数字-二分查找
    剑指offer-面试题53_1-在排序数组中查找数字-二分查找
    堆排序
    剑指offer-面试题52-两个链表的第一个公共节点-链表
  • 原文地址:https://www.cnblogs.com/pfdltutu/p/9018749.html
Copyright © 2020-2023  润新知