php设计模式_简单工厂2

来源:互联网 发布:淘宝实名认证小号 编辑:程序博客网 时间:2024/06/07 22:39
<?phpclass ChinaPizzaA {    public function __construct () {        print_r('create ChinaPizzaA instance');    }       public function cook () {        print_r('cooking ChinaA pizza!');    }       public function box () {        print_r('boxing ChinaA pizza!');    }   }
<?phpclass ChinaPizzaB {    public function __construct () {        print_r('create CHinaPizzaB instance');    }       public function cook () {        print_r('cooking ChinaB pizza!');    }       public function box () {        print_r('boxing ChinaB pizza!');    }   }
<?phpclass UsPizzaA {    public function __construct () {        print_r('create UsPizzaA instance');    }       public function cook () {        print_r('cooking Uspizza!');    }       public function box () {        print_r('boxing Uspizza!');    }   }
<?phpclass UsPizzaB {    public function __construct () {        print_r('create UsPizzaB instance');    }       public function cook () {        print_r('cooking UspizzaB!');    }       public function box () {        print_r('boxing UspizzaB!');    }   }
<?phprequire 'ChinaPizzaA.php';require 'ChinaPizzaB.php';require_once 'PizzaStore.php';class ChinaPizzaStore extends PizzaStore {    public function createPizza ($type) {        $pizza = '';         if ($type == 'PizzaA') {            $pizza = new ChinaPizzaA();        } elseif ($type == 'PizzaB') {            $pizza = new ChinaPizzaB();        }           return $pizza;    }   } 
<?phprequire 'UsPizzaA.php';require 'UsPizzaB.php';require_once 'PizzaStore.php';class UsPizzaStore extends PizzaStore {    public function createPizza ($type) {        $pizza = '';         if ($type == 'PizzaA') {            $pizza = new UsPizzaA();        } elseif ($type == 'PizzaB') {            $pizza = new UsPizzaB();        }           return $pizza;    }   } 
<?phpabstract class PizzaStore {        public function orderPizza ($type) {        $pizza = $this->createPizza($type);            $pizza->cook();        $pizza->box();        return $pizza;    }       protected abstract function createPizza ($type) ;}
<?phprequire 'ChinaPizzaStore.php';require 'UsPizzaStore.php';$p_store = new ChinaPizzaStore();$p_store->orderPizza('PizzaA');$p_store = new UsPizzaStore();$p_store->orderPizza('PizzaA');


说明: 采用抽象方法createPizza 让子类的商店去继承  强制让他实现这个方法  从而保持框架低耦合性 可控





原创粉丝点击