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 DOS攻击实现代码(附如何防范)
May 29 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
Symfony2联合查询实现方法
Mar 18 PHP
php数组函数array_walk用法示例
May 26 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
laravel学习教程之关联模型
Jul 30 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
php时间戳转换代码详解
Aug 04 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
php中的登陆login
2007/01/18 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
Js 中debug方式
2010/02/07 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
python中from module import * 的一个坑
2014/07/20 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python通过Pillow实现图片对比
2020/04/29 Python
python简单实现9宫格图片实例
2020/09/03 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
公司保洁员岗位职责
2015/02/13 职场文书
观看建国大业观后感
2015/06/01 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python