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

PHP怎么实现工厂模式?

发布网友 发布时间:2022-04-29 06:30

我来回答

3个回答

懂视网 时间:2022-04-29 10:51

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-29 07:59

<?php
/**
* 单例模式和工厂模式
*
* 保证一个类仅有一个实例,并提供一个访问它的全局访问点
*
*/
class Singleton
{
static private $_instance = null;

private function __construct()
{
}

static public function &getInstance($class='')
{
if(empty($class)){

if(is_null(self::$_instance)) {
self::$_instance = new Singleton();
}
return self::$_instance;
}else{
static $class_object=array();
if(empty($class_object[$class])){
include dirname(__FILE__).'/includes/classes/'.$class.'.class.php';
$class_object[$class]=new $class();

}
return $class_object[$class];

}

}

public function display()
{
echo "it is a singlton class function";
}
}

// $obj = new Singleton(); // 声明不能成功
$obj = Singleton::getInstance();
var_mp($obj);
$obj->display();

$obj1 = Singleton::getInstance();
var_mp(($obj === $obj1));

热心网友 时间:2022-04-29 09:17

简单工厂模式可用接口去实现!
用一个方法选择生产那个对象,就这样!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...爱你你是我的罗密欧 , 我愿意变成你的朱丽叶' 谁知 有句歌词是“我爱你你是我的朱丽叶,我愿意变成你的梁山伯”是哪... 为什么打印出来的文档页码和原来的不一样 ...两台电脑用路由器上网一台是W7一台是XP如何实现两台电脑共享文件 win7怎么联另一台电脑win7怎么让网络和另一台电脑共享 w7的系统怎么共享电脑w7系统里面文件怎么共享另一台电脑 共享win7电脑w7系统里面文件怎么共享另一台电脑 翡翠有收藏价值吗,我们玩家如何去投资 价格一两万元的翡翠如何挑选 ppt怎么转换成视频?简单四步法,轻松搞定ppt微课录制 一个出现两个微信,头像也变成红色怎么办? 一个出现两个微信,头像也变成红色怎么办? 微信头像接连换怎么图片泛红色了? 新闻学考研考的科目是哪几门? 新闻学专业都学什么内容? 传播学(网络传播方向)这个专业是干什么的? 大学中的网络与新媒体,主要学什么呀。就业方向是什么? 网络与新媒体概论 梦见自己家阴风机着火 梦见风扇吹头发,头发交进去着火了,后用水扑灭了? 梦见厨房着火, 连接炉灶的煤气管掉了,煤气管冲着阳台,喷出火焰,炉灶仍然着火,吸油烟机的风扇也着火 谁能说一下传播学这个专业学什么的 建刚记账卡 Ect激活程序是怎么的?需要在手机支付里完成? 传播学三个方向有什么区别 儿童安全座椅前置护体好还是五点式的好 我要幽默笑话 在小区开生鲜和超市利润怎么样? 跪求!!!谁能帮我这段话翻译成英文;感激不尽! 希望手工翻译,准确性高点! 求英语翻译,非常感谢 20分分段寻求英文翻译 我刚下载超级课程表,导入不了课表怎么回事? 自动手表如何调日历? 手表怎么调日历? 日本住所地址怎么填 苹果id 注册日本地址的住所日本国东京都千代田区千代田1番1号,格式怎么填写?_百度问一问 东京的具体位置及著名的场所有那些 JPTYOA是日本哪个地方的宿写? 东京地址求翻译 随便给我一个在日本东京的家庭住宅地址 急求日本地址翻译 请问长期驻日本的朋友,东京的富人居住聚集地是哪里? 东京哪个区最适合居住 我想去东京天空树,但是不知道它地址在哪里,怎么去 东京著名的住宅小区有哪几个? 东京地址求翻译~ 我想去东京和京都两个地方,请问分别住在哪个位置比较 日本政府驻地在哪 米家空气净化器和小米空气净化器根本区别在哪? 小米空气净化器2和1有什么区别 小米空气净化器1代和2代的区别