php 工厂模式

  1. <?php  
  2. /** 
  3.  * 基本工厂模式 
  4.  * */  
  5. class User {   
  6.     private $username;   
  7.     public function __construct($username) {   
  8.         $this->username = $username;   
  9.     }   
  10.       
  11.     public function getUser() {   
  12.         return $this->username;   
  13.     }   
  14. }  
  15.   
  16. class userFactory {   
  17.     static public function createUser() {   
  18.         return new User('Jack');   
  19.     }   
  20. }  
  21.   
  22. $user = userFactory::createUser();echo $user->getUser();  
  23.   
  24. /** 
  25.  *简单工厂模式 
  26.  * */  
  27. interface userProperties {  
  28.     function getUsername();  
  29.     function getGender();  
  30.     function getJob();  
  31. }  
  32. class User implements userProperties{  
  33.     private $username;  
  34.     private $gender;  
  35.     private $job;  
  36.     public function __construct($username$gender$job) {  
  37.         $this->username = $username;  
  38.         $this->gender = $gender;  
  39.         $this->job = $job;  
  40.     }  
  41.   
  42.     public function getUsername() {  
  43.         return $this->username;  
  44.     }  
  45.   
  46.     public function getGender() {  
  47.         return $this->gender;  
  48.     }  
  49.   
  50.     public function getJob() {  
  51.         return $this->job;  
  52.     }  
  53. }  
  54.   
  55. class userFactory {  
  56.     static public function createUser($properties = []) {  
  57.         return new User($properties['username'], $properties['gender'], $properties['job']);  
  58.     }  
  59. }  
  60.   
  61. $employers = [  
  62.     ['username' => 'Jack''gender' => 'male''job' => 'coder'],  
  63.     ['username' => 'Marry''gender' => 'female''job' => 'designer'],  
  64.     ];  
  65. $user = userFactory::createUser($employers[0]);  
  66. echo $user->getUsername();  
  67.   
  68. /** 
  69.  * 工厂方法模式 
  70.  **/  
  71. interface userProperties {  
  72.     function getUsername();  
  73.     function getGender();  
  74.     function getJob();  
  75. }  
  76.   
  77. interface createUser {  
  78.     function create($properties);  
  79. }  
  80.   
  81. class User implements userProperties{  
  82.     private $username;  
  83.     private $gender;  
  84.     private $job;  
  85.     public function __construct($username$gender$job) {  
  86.         $this->username = $username;  
  87.         $this->gender = $gender;  
  88.         $this->job = $job;  
  89.     }  
  90.   
  91.     public function getUsername() {  
  92.         return $this->username;  
  93.     }  
  94.   
  95.     public function getGender() {  
  96.         return $this->gender;  
  97.     }  
  98.   
  99.     public function getJob() {  
  100.         return $this->job;  
  101.     }  
  102. }  
  103.   
  104. class userFactory {  
  105.     private $user;  
  106.     public function __construct($properties = []) {  
  107.         $this->user =  new User($properties['username'], $properties['gender'], $properties['job']);  
  108.     }  
  109.   
  110.     public function getUser() {  
  111.         return $this->user;  
  112.     }  
  113. }  
  114.   
  115. class FactoryMan implements createUser {  
  116.     function create($properties) {  
  117.         return new userFactory($properties);   
  118.     }  
  119. }   
  120.   
  121. class FactoryWoman implements createUser {  
  122.     function create($properties) {  
  123.         return new userFactory($properties);  
  124.     }  
  125. }  
  126.   
  127. class clientUser {  
  128.     static public function getClient($properties) {  
  129.         $fac = new FactoryMan;  
  130.         $man = $fac->create($properties);  
  131.         echo $man->getUser()->getUsername();  
  132.     }  
  133. }  
  134.   
  135. $employers = [  
  136.     ['username' => 'Jack''gender' => 'male''job' => 'coder'],  
  137.     ['username' => 'Marry''gender' => 'female''job' => 'designer'],  
  138.     ];  
  139. $user = clientUser::getClient($employers[0]);  
  140.   
  141. /** 
  142.  * 抽象工厂模式 
  143.  * */  
  144.   
  145. interface userProperties {  
  146.     function getUsername();  
  147.     function getGender();  
  148.     function getJob();  
  149. }  
  150.   
  151. interface createUser { //将对象的创建抽象成一个接口  
  152.     function createOpen($properties);//内向创建  
  153.     function createIntro($properties);//外向创建  
  154. }  
  155.   
  156. class User implements userProperties{  
  157.     private $username;  
  158.     private $gender;  
  159.     private $job;  
  160.     public function __construct($username$gender$job) {  
  161.         $this->username = $username;  
  162.         $this->gender = $gender;  
  163.         $this->job = $job;  
  164.     }  
  165.   
  166.     public function getUsername() {  
  167.         return $this->username;  
  168.     }  
  169.   
  170.     public function getGender() {  
  171.         return $this->gender;  
  172.     }  
  173.   
  174.     public function getJob() {  
  175.         return $this->job;  
  176.     }  
  177. }  
  178.   
  179. class userFactory {  
  180.     private $user;  
  181.     public function __construct($properties = []) {  
  182.         $this->user =  new User($properties['username'], $properties['gender'], $properties['job']);  
  183.     }  
  184.   
  185.     public function getUser() {  
  186.         return $this->user;  
  187.     }  
  188. }  
  189.   
  190. class FactoryMan implements createUser {  
  191.     function createOpen($properties) {  
  192.         return new userFactory($properties);   
  193.     }  
  194.   
  195.     function createIntro($properties) {  
  196.         return new userFactory($properties);   
  197.     }  
  198. }   
  199.   
  200. class FactoryWoman implements createUser {  
  201.     function createOpen($properties) {  
  202.         return new userFactory($properties);  
  203.     }  
  204.   
  205.     function createIntro($properties) {  
  206.         return new userFactory($properties);  
  207.     }  
  208. }  
  209.   
  210. class clientUser {  
  211.     static public function getClient($properties) {  
  212.         $fac = new FactoryMan;  
  213.         $man = $fac->createOpen($properties);  
  214.         echo $man->getUser()->getUsername();  
  215.     }  
  216. }  
  217.   
  218. $employers = [  
  219.     ['username' => 'Jack''gender' => 'male''job' => 'coder'],  
  220.     ['username' => 'Marry''gender' => 'female''job' => 'designer'],  
  221.     ];  
  222. $user = clientUser::getClient($employers[0]);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值