问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁能解释一下PHP的工厂模式?

发布网友 发布时间:2022-04-07 05:32

我来回答

3个回答

懂视网 时间:2022-04-07 09:54

PHP代码实现简单的工厂模式方法

1、定义抽象基类

//家禽类
abstract class Fowl
{
	abstract public function eat();//吃方法
}

2、定义子类

//牛类
class Cattle extends Fowl
{
	public function eat()
	{
		echo "我是牛,我吃草";
	}
}
//鸭类
class Duck extends Fowl
{
	public function eat()
	{
		echo "我是鸭,我吃鱼";
	}
}
//羊类
class Sheep extends Fowl
{
	public function eat()
	{
		echo "我是羊,我吃草";
	}
}

3、工厂类

//工厂类
class Factory
{
	public static function create($fowlName)
	{
		switch ($fowlName) {
			case 'Cattle':
				return new Cattle();
				break;
			case 'Duck':
				return new Duck();
				break;
			case 'Sheep':
				return new Sheep();
				break;
		}
	}
}

4、客户端

$cattle = Factory::create('Cattle');
$cattle->eat();//我是牛,我吃草

$duck = Factory::create('Duck');
$duck->eat();//我是鸭,我吃鱼

$sheep = Factory::create('Sheep');
$sheep->eat();//我是羊,我吃草

热心网友 时间:2022-04-07 07:02

工厂模式是程序设计模式的一种。

一般是在某个基础类上创建一个静态方法,根据参数来生成某个子类。这个方法,称为工厂方法。

类比到现实,就像一个工厂,包含几种产品,会根据客户的订单需求生产出指定的产品供客户使用。

最简单的用法:

class Pizza{
    public $price;
    
    public static function factory($type)
    {
        if($type=='veget'){
            return new VegetPizza();
        }elseif($type=='fruit'){
            return new FruitPizza();
        }
    }
}

class VegetPizze extends Pizza{
}

class FruitPizze extends Pizza{
}

大概逻辑是这样的,具体实现上有好几种写法,你可以搜索设计模式深入了解一五

热心网友 时间:2022-04-07 08:20

你是不是在用某个PHP做的CMS系统,按字面意思,应该是叫 开发模式。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王卡专属免流包是什么意思 腾讯王卡专属流量是什么意思 人防临空墙排烟机房可以留洞吗? 瑞士转机的问题? 雅阁、第九代凯美瑞、迈腾,大空间的中级车推荐 云顶之弈双人排位介绍 金铲铲之战 金铲铲段位相差多少可以一起打? 现在上海办理居住证需要本人去吗 34周加5天是几个月 孕34周是几个月了 孕34周如何预防早产 cad2016在win11注册 致命错误 常春藤的含义 常春藤代表的花语是什么??? 常春藤的寓意是什么? 锦弘森pos机应该怎样安装 请教:支付通(科海融通)的移动POS机怎么在机子上改小票的商户名称(小票标题) 微信隐形头像怎么弄的 淘宝为什么用不了微信支付 大家一般都在哪个网站下电影? 在淘宝上通过微信支付的怎么投诉 在淘宝买书,支付宝没钱用微信付的款,到现在付款四天了,卖家不说发货情况也不理我?怎么办 我在淘宝上看到东西,卖家让微信支付,付完款以后,卖家联系不上了, 为什么给淘宝买东西向商家付的款在微信付款记录里查不到? eMMC的boot区域是干什么用的? 有没有个可以下电影的好网址啊? 什么网站下电影有快又清晰? 用淘宝买东西,我用微信支付,付款后卖家把我删了还屏蔽了!怎么办!!急急急! 下载电影的网址? 紧急,我在淘宝买了东西,想退款,但我是用微信支付的,商家不理我,微信也把我删了,请问我该怎么办?? 淘宝卖家微信支付。刚好支付宝没钱了就想微信支付也好。漏发了。客服不理我。卖家也不理我。。怎么办?? 请教:C语言中是否有类的概念 求教 谁能解释一下编程语言中的 类。 c语言中有 类 的概念吗? c语言里为什么没有类? 幼儿园基础英语8篇教案 C语言中没有类这个概念吗? 求一份幼儿园英文教案详细 C语言有像JAVA那样的方法和类吗 C语言中的类 幼儿英语教案,求完整版 C语言中的类分为哪些?成员函数?接口封装?数据成员? C语言中有关类的问题~~ C语言,C++语言里面有类吗 C语言中是否有逻辑类型和集合类型? 如果在c语言中加入类类型,会如何? Genesis的乐团介绍 布莱迪·巴尔的捕鳄经历 闵锐的社会实践 布莱迪·巴尔的个人履历 博基姆·伍德拜因的作品简介 布莱迪·巴尔在自然传奇中戴的是什么眼镜?