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
thinkphp如何获取客户端IP
Nov 03 PHP
PHP文件上传类实例详解
Apr 08 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
PHP7多线程搭建教程
Apr 21 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
PHP实现的AES 128位加密算法示例
Sep 16 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中使用Oracle数据库(3)
2006/10/09 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
解读Python编程中的命名空间与作用域
2015/10/16 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
python抽取指定url页面的title方法
2018/05/11 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Django 路由层URLconf的实现
2019/12/30 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
详解python 内存优化
2020/08/17 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
大学自荐信
2013/12/12 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
装配出错检讨书
2014/09/23 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
React forwardRef的使用方法及注意点
2021/06/13 Javascript