php中使用接口实现工厂设计模式的代码

yipeiwu_com7年前PHP代码库

接口在php只能起到约束类的定义作用,虽不像c#/java那么直观,但基于oop的封装要求,使用接口可以提高程序的可扩展性,如实现代理设计模式。

复制代码 代码如下:

<?php
//人类接口
interface IHuman
{
function GetName();
}
//男人类,实现人类接口
class ManClass implements IHuman
{
//获取姓名方法
public function GetName()
{
return "I'm man."."<br>";
}
}
//女人类,实现人类接口
class WomanClass implements IHuman
{
//获取姓名方法
public function GetName()
{
return "I'm Woman."."<br>";
}
}
//类工厂,根据需要生产不同实例对象返回
class ManFactory
{
//根据参数获取实例对象
public function GetIHuman($IHuman="man")
{
if($IHuman=="woman")
{
return new WomanClass();
}
else if($IHuman=="man")
{
return new ManClass();
}
else
{
return null;
}
}
//直接获取woman类
public function GetWoman()
{
return new WomanClass();
//return new ManClass();
}
//直接获取man类
public function GetMan()
{
return new ManClass();
}
}
$ManFactory=new ManFactory();
$ManClass=$ManFactory->GetIHuman();
echo $ManClass->GetName();
$IHuman=$ManFactory->GetIHuman("woman");
echo $IHuman->GetName();
$Woman=$ManFactory->GetWoman();
echo $Woman->GetName();
$Man=$ManFactory->GetMan();
echo $Man->GetName();
?>

运行结果:
I'm man.
I'm Woman.
I'm Woman.
I'm man.

相关文章

php使用curl模拟多线程实现批处理功能示例

本文实例讲述了php使用curl模拟多线程实现批处理功能。分享给大家供大家参考,具体如下: php模拟多线程用到curl库,这个库很强大,可以做好多事,比如模拟登陆,文件上传/下载,数据...

PHP支持多种格式图片上传(支持jpg、png、gif)

此处一次支持上传2个图片,上传后生成原图和质量较差的图,原图用于保存质量高的图片,质量差的图用于网页显示。 PHP Code 复制代码 代码如下: <?php include_on...

Linux环境下php实现给网站截图的方法

本文实例讲述了Linux环境下php实现给网站截图的方法。分享给大家供大家参考,具体如下: 第一步:下载wkhtmltopdf 复制代码 代码如下:[root@iZ94aawoublZ...

php设计模式 State (状态模式)

状态state模式是GOF23种模式中的一种,和命令模式一样,也是一种行为模式。状态模式和命令模式相当像,一样是“接口—实现类”这种模式的应用,是面向接口编程原则的体现。 状态模式属于对...

PHP框架性能测试报告

作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。 用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人...