php设计模式_简单工厂

来源:互联网 发布:linux终端选项 编辑:程序博客网 时间:2024/05/18 00:18
<?phpclass PizzaA {    public function __construct () {        print_r('create PizzaA instance');    }       public function cook () {        print_r('cooking pizza!');    }       public function box () {        print_r('boxing pizza!');    }   }

<?phpclass PizzaB {    public function __construct () {        print_r('create PizzaB instance');    }       public function cook () {        print_r('cooking pizza!');    }       public function box () {        print_r('boxing pizza!');    }   }
<?phpclass PizzaStore {        public function __construct (SimplePizzaFactory $pizzaFactory) {        $this->factory = $pizzaFactory;    }       public function orderPizza ($type) {        $pizza = $this->factory->createPizza($type);            $pizza->cook();        $pizza->box();    }   }
<?phprequire 'PizzaA.php';require 'PizzaB.php';class SimplePizzaFactory {    public function createPizza ($type) {        $pizza = '';         if ($type == 'PizzaA') {            $pizza = new PizzaA();        } elseif ($type == 'PizzaB') {            $pizza = new PizzaB();        }           return $pizza;    }   }
<?phprequire 'PizzaStore.php';require 'SimplePizzaFactory.php';$factory = new SimplePizzaFactory();$p_store = new PizzaStore($factory);$p_store->orderPizza('PizzaA');



说明:  抽象一个披萨工厂的类 专门用来处理生产各种披萨    生产完毕  送到披萨商店   当然这个时候披萨商店要拿到披萨的实例,然后执行披萨自己的一系列操作


工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类