时间:2021-05-26
本文以实例形式较为详细的介绍了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了php设计模式之工厂方法模式。分享给大家供大家参考,具体如下:PHP手册上提到的工厂模式,其实是简单工厂模式。这里来讨论简单工厂模式的扩展:工厂方
本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法。分享给大家供大家参考,具体如下:设计模式简单说应对某类问题而设计的解决方式工厂模式:应对需求创建相应的
本文实例讲述了PHP设计模式之工厂模式定义与用法。分享给大家供大家参考,具体如下:工厂模式(FactoryDesignPattern)作为一种创建型设计模式,遵
本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下:简单工厂模式(SimpleFactoryPattern):是通过专门定义一个类
本文实例讲述了Java设计模式之静态工厂模式。分享给大家供大家参考,具体如下:静态工厂模式(staticfactory)也叫简单工厂模式。涉及到3个角色:工厂类