CenterFactory

<?php

/* 实例3 */

/* 抽象工厂 */

//青铜会员的打折商品

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.‘<br>‘;

//获得一个青铜工厂

$factory2 = CenterFactory::getFactory2(‘Bronze‘);

//让青铜工厂制造一个打折商品

$product2 = $factory2->create(‘Rebate‘);

//得到青铜会员的推荐商品

echo $product2->desc;

时间: 2024-11-05 14:49:44

CenterFactory的相关文章