介绍
今天就跟大家聊聊有关怎么在php项目中实现一个简单工厂模式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强>一、概念强>
简单工厂模式【静态工厂方法模式】(静态工厂方法)
是类的创建模式
<强>工厂模式的几种形态:强>
1,简单工厂模式(简单工厂)又叫做静态工厂方法模式(静态工厂方法)
2,工厂方法模式(工厂方法)又叫做多态性工厂模式(多态工厂)
3,抽象工厂模式(抽象工厂)又叫做工具箱模式(工具包)
<强>二,配图分析:强>
<强>三、代码实例强>
该实例代码经过测试可以运行,具体如下:
& lt;及# 63;php/* * *一个事例 * *一个农场,要向市场销售水果 *农场里有三种水果苹果、葡萄 *我们设想:1、水果有多种属性,每个属性都有不同,但是,他们有共同的地方|生长,种植,收的货,吃 * 2,将来有可能会增加新的水果,我们需要定义一个接口来规范他们必须实现的方法 * 3,我们需要获取某个水果的类,要从农场主那里去获取某个水果的实例,来知道如何生长,种植,收的货,吃 *//* * *虚拟产品接口类 *定义好需要实现的方法 */接口水果{/* * *生长 */公共函数增长();/* * *种植 */公共函数工厂();/* * *收获 */公共函数收获();/* * *吃 */公共函数吃(); }/* * *定义具体产品类苹果 *首先,我们要实现所继承的接口所定义的方法 *然后定义苹果所特有的属性,以及方法 */类苹果实现水果{//苹果树有年龄 私人treeAge美元;//苹果有颜色 私人美元颜色; 公共函数增长(){ 回声“葡萄grow"; } 公共函数工厂(){ 回声“葡萄plant"; } 公共函数收获(){ 回声“葡萄harvest"; } 公共函数吃(){ 回声“葡萄eat"; }//取苹果树的年龄 公共函数getTreeAge () { 返回$ this→treeAge; }//设置苹果树的年龄 公共函数setTreeAge(年龄美元){ $ this→treeAge=$年龄; 返回单词查找树; } }/* * *定义具体产品类葡萄 *首先,我们要实现所继承的接口所定义的方法 *然后定义葡萄所特有的属性,以及方法 */类葡萄实现水果{//葡萄是否有籽 私人无籽美元; 公共函数增长(){ 回声“苹果grow"; } 公共函数工厂(){ 回声“苹果plant"; } 公共函数收获(){ 回声“苹果harvest"; } 公共函数吃(){ 回声“苹果eat"; }//有无籽取值 公共函数getSeedLess () { 返回$ this→无核; }//设置有籽无籽 公共函数setSeedLess(种子){ $ this→无籽=美元种子; 返回true; } }/* * *农场主类用来获取实例化的水果 * */类农民{//定义个静态工厂方法 公共静态函数工厂(fruitName美元){ 开关(fruitName美元){ & # 39;苹果# 39;: 返回新的苹果(); 打破; & # 39;葡萄# 39;: 返回新葡萄(); 打破; 默认值: 把新的badFruitException(“错误没有fruit", 1); 打破; } } } 类badFruitException扩展异常{ 公共美元味精; 公共errType美元; 公共函数__construct($味精=& # 39;& # 39;errType=1美元){ $ this→味精=$味精; $ this→errType=$ errType; } }/* * *获取水果实例化的方法 */尝试{ $ appleInstance=农民::工厂(& # 39;苹果# 39;); appleInstance美元var_dump (); }捕捉(badFruitException犯错美元){ echo $犯错→味精。“_______"。犯错→美元errType; }
看完上述内容,你们对怎么在php项目中实现一个简单工厂模式有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。