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实现将GB编码转换为UTF8
Nov 25 PHP
php中的MVC模式运用技巧
May 03 PHP
PHP6 先修班 JSON实例代码
Aug 23 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
基于PHP生成简单的验证码
Jun 01 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
yii插入数据库防并发的简单代码
May 27 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 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
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
jQuery多个input求和的实现方法
2015/02/12 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python中的jquery PyQuery库使用小结
2014/05/13 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
用Python抢过年的火车票附源码
2015/12/07 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
美发店5.1活动方案
2014/01/24 职场文书
微观物理专业自荐信
2014/01/26 职场文书
三个儿子教学反思
2014/02/03 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
儿童生日会策划方案
2014/05/15 职场文书
图书室标语
2014/06/21 职场文书
婚礼答谢礼品
2015/01/20 职场文书
在校证明模板
2015/06/17 职场文书