工厂模式
工厂模式封装了对象的建立过程。你可以在对象本身创建对象工厂或者是一个额外的工厂类。
由工厂类根据参数来决定创建出哪一种产品类的实例;
工厂类是指包含了一个专门用来创建其他对象的方法的类。所谓按需分配,传入参数进行选择,返回具体的类。工厂模式的最主要作用就是对象创建的封装、简化创建对象操作。
简单的说,就是调用工厂类的一个方法(传入参数)来得到需要的类;
示例
<\?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