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 相关文章推荐
用户的详细注册和判断
Oct 09 PHP
基于mysql的论坛(3)
Oct 09 PHP
PHP连接access数据库
Mar 27 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
Sep 05 PHP
php 发送带附件邮件示例
Jan 23 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
PHP Trait功能与用法实例分析
Jun 03 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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重定向的三种方法分享
2012/02/22 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
php函数连续调用实例分析
2015/07/30 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
js对象的比较
2011/02/26 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
js实现消息滚动效果
2017/01/18 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
windows 下python+numpy安装实用教程
2017/12/23 Python
python实现换位加密算法的示例
2018/10/14 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
护士毕业生自我鉴定
2014/02/08 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
投资意向书范本
2014/04/01 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
2015年党总支工作总结
2015/05/25 职场文书
react 路由Link配置详解
2021/11/11 Javascript