php工厂模式

Jul 26, 2016


工厂模式

工厂模式封装了对象的建立过程。你可以在对象本身创建对象工厂或者是一个额外的工厂类。

由工厂类根据参数来决定创建出哪一种产品类的实例;

工厂类是指包含了一个专门用来创建其他对象的方法的类。所谓按需分配,传入参数进行选择,返回具体的类。工厂模式的最主要作用就是对象创建的封装、简化创建对象操作。

简单的说,就是调用工厂类的一个方法(传入参数)来得到需要的类;

示例

	<\?php
			//抽象工厂
			 
			//青铜会员的打折商品
			class BronzeRebateCommodity {
			//描述
			public $desc = '青铜会员的打折商品';
			}
			 
			//白银会员的打折商品
			class SilverRebateCommodity {
			public $desc = '白银会员的打折商品';
			}
			 
			//青铜会员的推荐商品
			class BronzeCommendatoryCommodity {
			public $desc = '青铜会员的推荐商品';
			}
			 
			//白银会员的推荐商品
			class SilverCommendatoryCommodity {
			public $desc = '白银会员的推荐商品';
			}
			 
			//各个工厂的接口
			interface ConcreteFactory {
			//生产对象的方法
			public function create($what);
			}
			 
			//青铜工厂
			class BronzeFactory implements ConcreteFactory {
			 
			//生产对象的方法
			public function create($what){
			$productName = 'Bronze'.$what.'Commodity';
			return new $productName;
			}
			 
			}
			 
			//白银工厂
			class SilverFactory implements ConcreteFactory {
			 
			//生产对象的方法
			public function create($what){
			$productName = 'Silver'.$what.'Commodity';
			return new $productName;
			}
			 
			}
			 
			//调度中心
			class CenterFactory {
			 
			//获取工厂的方法
			public function getFactory($what){
			$factoryName = $what.'Factory';
			return new $factoryName;
			}
			 
			//获取工厂的静态方法
			public static function getFactory2($what){
			$factoryName = $what.'Factory';
			return new $factoryName;
			}
			 
			}
			 
			//实例化调度中心
			$center  = new CenterFactory();
			//获得一个白银工厂
	        $factory = $center->getFactory('Silver');
			//让白银工厂制造一个推荐商品
			$product = $factory->create('Commendatory');
			//得到白银会员的推荐商品
			echo $product->desc.'
'; //获得一个青铜工厂 $factory2 = CenterFactory::getFactory2('Bronze'); //让青铜工厂制造一个打折商品 $product2 = $factory2->create('Rebate'); //得到青铜会员的推荐商品 echo $product2->desc;

原文出处:http://blog.sina.com.cn/s/blog_6dbbafe001018zhv.html