工厂模式:工厂类是指一个专门用来创建其他对象的方法的类,返回符合类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应实例化哪一个类。
简单来说,就是为了达到某种目标,需要采用某种方法,而方法会因为作用对象的不同而不同。例如,在计算一笔订单时,需要根据会员等级来确定金额,这时就要用不同的方法。
以下是我的代码,(比较粗糙,只为说明问题)
1 <?php 2 interface price{ 3 function getPrice(); 4 } 5 6 class normalprice implements price{ 7 protected $_oprice; 8 public function __construct($_oprice){ 9 $this->_oprice=$_oprice; 10 } 11 public function getPrice(){ 12 return $this->_oprice; 13 } 14 } 15 16 class vipprice implements price{ 17 protected $_oprice; 18 public function __construct($_oprice){ 19 $this->_oprice=$_oprice; 20 } 21 public function getPrice(){ 22 return $this->_oprice*0.8; 23 } 24 } 25 26 class priceFactory{ 27 public static function factory($_oprice,$grade){ 28 if($grade=="normal"){ 29 $price=new normalprice($_oprice); 30 }elseif ($grade=="vip"){ 31 $price=new vipprice($_oprice); 32 } 33 34 35 if($price instanceof price){ 36 return $price; 37 }else { 38 echo 'return wrong'; 39 } 40 } 41 } 42 43 44 $vip=priceFactory::factory(100,"vip"); 45 echo $vip->getPrice(); 46 echo '<br/>'; 47 $normal=priceFactory::factory(100,"normal"); 48 echo $normal->getPrice(); 49 50 51 52 ?>
另外还有根据图像格式获得相关数据,以及根据不同的数据库获得统一的操作接口,都可以用工厂模式解决。