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


Posted in PHP onJune 17, 2012

接口在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 相关文章推荐
PHP学习之PHP运算符
Oct 09 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
PHP Token(令牌)设计
Mar 15 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
php实现快速排序的三种方法分享
Mar 12 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
php中jQuery插件autocomplate的简单使用笔记
Jun 14 #PHP
PHP的加密方式及原理
Jun 14 #PHP
php面向对象 字段的声明与使用
Jun 14 #PHP
PHP对象Object的概念 介绍
Jun 14 #PHP
深入了解PHP类Class的概念
Jun 14 #PHP
让PHP更快的提供文件下载的代码
Jun 13 #PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 #PHP
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
Javascript的闭包
2009/12/31 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python登录注册验证功能实现
2018/06/18 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
python属于解释语言吗
2020/06/11 Python
python collections模块的使用
2020/10/16 Python
python爬取抖音视频的实例分析
2021/01/19 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
党员自我评价分享
2013/12/13 职场文书
大学生蛋糕店创业计划书
2014/01/13 职场文书
学校岗位设置方案
2014/01/16 职场文书
班队活动设计方案
2014/01/30 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
停课通知书
2015/04/24 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
如何书写授权委托书?
2019/06/25 职场文书
创业计划书之书店
2019/09/10 职场文书
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python