本文以实例形式较为详细的介绍了PHP设计模式的简单工厂模式,对于进行PHP程序设计来说有很好的借鉴作用。具体如下:
一、概念简单工厂模式 【静态工厂方法模式】(Static Factory Method)
是类的创建模式
工厂模式的几种形态:1、简单工厂模式(Simple Factory)又叫做 静态工厂方法模式(Static Factory Method)
2、工厂方法模式(Factory Method)又叫做 多态性工厂模式(Polymorphic Factory)
3、抽象工厂模式(Abstract Factory)又叫做 工具箱模式(ToolKit)
二、配图分析:
三、代码实例该实例代码经过测试可以运行,具体如下:
<?php/** * 一个事例 * * 一个农场,要向市场销售水果 * 农场里有三种水果 苹果、葡萄 * 我们设想:1、水果有多种属性,每个属性都有不同,但是,他们有共同的地方 | 生长、种植、收货、吃 * 2、将来有可能会增加新的水果、我们需要定义一个接口来规范他们必须实现的方法 * 3、我们需要获取某个水果的类,要从农场主那里去获取某个水果的实例,来知道如何生长、种植、收货、吃 *//** * 虚拟产品接口类 * 定义好需要实现的方法 */interface fruit{/** * 生长 */public function grow();/** * 种植 */public function plant();/** * 收获 */public function harvest();/** * 吃 */public function eat();}/** * 定义具体产品类 苹果 * 首先,我们要实现所继承的接口所定义的方法 * 然后定义苹果所特有的属性,以及方法 */class apple implements fruit{//苹果树有年龄private $treeAge;//苹果有颜色private $color;public function grow(){echo "grape grow";}public function plant(){echo "grape plant";}public function harvest(){echo "grape harvest";}public function eat(){echo "grape eat";}//取苹果树的年龄public function getTreeAge(){return $this->treeAge;}//设置苹果树的年龄public function setTreeAge($age){$this->treeAge = $age;return trie;}}/** * 定义具体产品类 葡萄 * 首先,我们要实现所继承的接口所定义的方法 * 然后定义葡萄所特有的属性,以及方法 */class grape implements fruit{//葡萄是否有籽private $seedLess;public function grow(){echo "apple grow";}public function plant(){echo "apple plant";}public function harvest(){echo "apple harvest";}public function eat(){echo "apple eat";}//有无籽取值public function getSeedLess(){return $this->seedLess;}//设置有籽无籽public function setSeedLess($seed){$this->seedLess = $seed;return true;}}/** *农场主类 用来获取实例化的水果 * */class farmer{//定义个静态工厂方法public static function factory($fruitName){switch ($fruitName) {case "apple":return new apple();break;case "grape":return new grape();break;default:throw new badFruitException("Error no the fruit", 1);break;}}}class badFruitException extends Exception{public $msg;public $errType;public function __construct($msg = "" , $errType = 1){$this->msg = $msg;$this->errType = $errType;}}/** * 获取水果实例化的方法 */try{$appleInstance = farmer::factory("apple");var_dump($appleInstance);}catch(badFruitException $err){echo $err->msg . "_______" . $err->errType;}希望本文所述实例对大家PHP程序设计有所帮助。