本文以实例形式较为详细的介绍了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 plantenvironment可数吗(){ echo "grape plant"; } public function harvest(){ echo "grape harvest"; } publi节能减排低碳生活c function eat(){ echo "grape eat"; } //取苹果树的年龄 public function gettreeage(){ return $this->treeage; } //设置苹果树的年龄 public function ttreeage($age){ $this->treeage = $age; return trie; }}/** * 定义具体产品类 葡萄 * 首先,我们要实现所继承的接口所定义的方法 * 然后定义葡萄所特有的属性,北京市重点高中以及方法 */class grape implements fruit{ //葡萄是否有籽 private $edless; public function grow(){ echo "apple grow"; } public fun一事无成歌词ction plant(){ echo "apple plant"; } public function harvest(){ echo "apple harvest"; } public function eat(){ echo "apple eat"; } //有无籽取值 public function getedless(){ return $this->edless; } //设置有籽无籽 public function tedless($ed){ $this->edless = $ed; return true; }}/** *农场主类 用来获取实例化的水果 * */class farmer{ //定义个静态工厂方法 public static function factory($fruitname){ switch ($fruitname) { ca 'apple': return new apple(); break; ca '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程序设计有所帮助。
本文发布于:2023-04-06 21:42:05,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/5942f7c1f4972671c897f18cfbe690da.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php设计模式之简单工厂模式详解.doc
本文 PDF 下载地址:php设计模式之简单工厂模式详解.pdf
留言与评论(共有 0 条评论) |