php设计模式之简单工厂模式详解
网络编程 2021-07-05 09:50www.168986.cn编程入门
这篇文章主要介绍了php设计模式的简单工厂模式,又称为静态工厂方法模式,是一种重要的PHP设计模式,需要的朋友可以参考下
本文以实例形式较为详细的介绍了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程序设计有所帮助。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指