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目录导航文件代码
Oct 09 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
PHP修改session_id示例代码
Jan 08 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
微信支付开发订单查询实例
Jul 12 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
php csv操作类代码
2009/12/14 PHP
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
Python 文件和输入输出小结
2013/10/09 Python
深入理解Python 代码优化详解
2014/10/27 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
感恩母亲节活动方案
2014/03/04 职场文书
寄语是什么意思
2014/04/10 职场文书
国际贸易专业求职信
2014/06/04 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
狮子林导游词
2015/02/03 职场文书
玄武湖导游词
2015/02/05 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
居住证明范文
2015/06/17 职场文书
Golang并发操作中常见的读写锁详析
2021/08/30 Golang