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 相关文章推荐
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
php 猴子摘桃的算法
Jun 20 PHP
微信开发之获取JSAPI TICKET
Jul 07 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
php报错502badgateway解决方法
Oct 11 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 高手之路(一)
2006/10/09 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
PHP中字符安全过滤函数使用小结
2015/02/25 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
js数组操作常用方法
2014/05/08 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
深入探讨前端框架react
2015/12/09 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Python正则表达式指南 推荐
2018/10/09 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
门卫人员岗位职责
2013/12/24 职场文书
2014年建筑工作总结
2014/11/26 职场文书
论文评审意见
2015/06/05 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
离婚起诉书范文2016
2015/11/26 职场文书