yangzailu

导航

演示工厂模式

<?php
header("content-type:text/html;charset=utf-8");
//演示工厂模式
/*
需求:请设计一个类,该类有一个方法,能够做到这种效果:
  给该方法传入一个类名,则该方法就可以返回这个类的对象。就像一个
“塑料制品”工厂:给它一个某种产品的“模具”,就可以生产该模具对
应的塑料制品。
*/
 
 //工厂类
class Factory{
 static  function GetObjectByClassName($class_name){
     $obj1=new $class_name();
     return $obj1;
  }
}

class A{};
class B{};
class C{};
//$F=new Factory();
//$obj1= $F->GetObjectByClassName("A");
$obj1= Factory::GetObjectByClassName("A");
$obj2= Factory::GetObjectByClassName("A");
$obj3= Factory::GetObjectByClassName("B");
$obj4= Factory::GetObjectByClassName("C");
$obj5= Factory::GetObjectByClassName("A");
echo "<br />";var_dump($obj1); 
echo "<br />";var_dump($obj2); 
echo "<br />";var_dump($obj3); 
echo "<br />";var_dump($obj4); 
echo "<br />";var_dump($obj5); 

/*

object(A)#2 (0) { } 
object(A)#3 (0) { } 
object(B)#4 (0) { } 
object(C)#5 (0) { } 
object(A)#6 (0) { }

*/

 

posted on 2016-08-31 09:33  飞离地平线  阅读(397)  评论(0编辑  收藏  举报