首页 后端开发 php教程 用PHP代码实现简单的工厂模式

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

Apr 29, 2020 pm 03:26 PM
php

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

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();//我是羊,我吃草

以上是用PHP代码实现简单的工厂模式的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

如何使用PHP更新数据库中的记录? 如何使用PHP更新数据库中的记录? Sep 21, 2025 am 04:47 AM

toupdateadatabaseRecordInphp,firstConnectusingpDoormySqli,thenusepreparedStatementStoExecuteAsecuteAsecuresqurupDatequery.example.example:$ pdo = newpdo(“ mySql:mysql:host = localHost; localhost; localhost; dbname; dbname = your_database = your_database',yous_database',$ username,$ username,$ squeaste;

如何查看PHP中的文件权限? 如何查看PHP中的文件权限? Sep 22, 2025 am 06:27 AM

usefileperms()togetFilePermissionsasanIntegerAntegatusingsPrintf('%o')

如何在PHP中实现单身模式? 如何在PHP中实现单身模式? Sep 25, 2025 am 12:27 AM

单例模式确保一个类只有一个实例,并提供全局访问点,适用于需要单一对象协调系统操作的场景,如数据库连接或配置管理。2.其基本结构包括:私有的静态属性存储实例、私有构造函数防止外部创建、私有克隆方法防止复制,以及公共静态方法(如getInstance())用于获取实例。3.在PHP中通过调用getInstance()方法获取唯一实例,无论调用多少次都返回同一对象引用。4.标准PHP请求模型下无需考虑线程安全,但在长运行或多线程环境中需注意同步问题,而PHP本身不支持原生锁机制。5.尽管单例有用,但会

如何在PHP脚本中获取命令行参数? 如何在PHP脚本中获取命令行参数? Sep 22, 2025 am 06:19 AM

使用$argv和$argc获取PHP命令行参数,$argc为参数数量,$argv为参数数组,如phpscript.phphelloworld中$argc=3,$argv=['script.php','hello','world'];用$argv[1]等访问具体参数;复杂场景可用getopt()处理短选项(-f)和长选项(--file)。

如何在php中使用无效的合并操作员(??)? 如何在php中使用无效的合并操作员(??)? Sep 25, 2025 am 01:28 AM

答案:PHP的空合并操作符(??)用于检查变量或数组键是否存在且非null,若成立则返回其值,否则返回默认值。它可避免使用冗长的isset()检查,适用于处理未定义变量和数组键,如$username=$userInput??'guest',且支持链式调用,如$theme=$userTheme??$defaultTheme??'dark',特别适合表单、配置和用户输入处理,但仅排除null值,空字符串、0或false均被视为有效值返回。

如何在PHP中获取URL参数? 如何在PHP中获取URL参数? Sep 24, 2025 am 05:11 AM

使用$_GET获取URL参数,如?name=John&age=25;通过isset或空合并运算符检查存在性,并用filter_input过滤和验证数据以确保安全。

如何在PHP中创建ZIP文件? 如何在PHP中创建ZIP文件? Sep 22, 2025 am 06:06 AM

UsEtheziparchiveclasStocreateAzipfileInphPbyInstantiatingTheObject,OpenthearchErearchiveWithOpen(),AddingfilesviaAddfile()oradddfromstring(),and closingingitWithClose()和closingitwithClose()

如何在PHP中创建JSON对象? 如何在PHP中创建JSON对象? Sep 22, 2025 am 04:13 AM

使用json_encode()函数可将PHP数组或对象转换为JSON字符串。例如,关联数组["name"=>"John","age"=>30,"city"=>"NewYork"]经json_encode()后输出{"name":"John","age":30,"city":"NewYork&

See all articles