PHP高级对象构建 工厂模式的使用


Posted in PHP onFebruary 05, 2012

PHP设计模式工厂模式的使用方法

<?php 
/* 
* 每日练习 PHP设计模式工厂模式的使用方法 
* PHP工厂模式不难理解,顾名思义,就是一个加工厂,然后工厂是制造产品的,只要制造产品 
* 就必须有几个要素:"方法","模型","工厂车间"。 
*/ 
/*第一种示例 普通工厂模式 
* */ 
abstract class model {//产品模型 
abstract function getNames(); 
} 
class zhangsan extends model {//产品实例 
function getNames(){ 
return "my name is zhengsan"; 
} 
} 
class lisi extends model{//产品实例 
function getNames(){ 
return "my name is lisi"; 
} 
} 
abstract class gongchangModel {//工厂模型 
abstract function getZhangsan(); 
abstract function getLisi(); 
} 
class gongchang extends gongchangModel{//工厂实例 
function getZhangsan(){ 
return new zhangsan(); 
} 
function getLisi(){ 
return new lisi(); 
} 
} 
$gongchang=new gongchang();//实例化工厂 
$zhangsan=$gongchang->getZhangsan();//制造产品 
echo $zhangsan->getNames();//产品输出功能 
?>

之前我写去关于工厂设计模式的文章,实际上,工厂模式包含普通工厂模式和抽象工厂模式,但是,不管是什么工厂模式,它们都是有一个作用,那就是生成对象。
好了,那我们用下面最最简单的例子,再把PHP设计模式中的厂模式再演示一下。
我自己总结了一下,工厂模式的三个要素:
一、产品模型
二、产品实例
三、工厂车间
<?php 
abstract class prModel {//产品模型 
abstract function link(); 
} 
class webLink extends prModel{//实例一个产品 
public function link(){ 
echo "3water.com"; 
} 
} 
class gongchang {//工厂 
static public function createLink (){ 
return new webLink(); 
} 
} 
$weblink=gongchang::createLink();//通过工厂制造一个对象 
$weblink->link();//输出 3water.com 
?>

以上方法,就简单的说明了工厂类的使用方法。关注面向对象
PHP 相关文章推荐
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
php while循环得到循环次数
Oct 26 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
七种PHP开发环境搭建工具
Jun 28 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 #PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 #PHP
php 搜索框提示(自动完成)实例代码
Feb 05 #PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 #PHP
PHP测试程序运行时间的类
Feb 05 #PHP
PHP设计模式 注册表模式
Feb 05 #PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 #PHP
You might like
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
程序员编程十条戒律
2009/07/09 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
python处理Excel xlrd的简单使用
2017/09/12 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python类中super() 的使用解析
2019/12/19 Python
Python 合并拼接字符串的方法
2020/07/28 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
linux面试题参考答案(5)
2014/09/01 面试题
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
实习生自荐信范文分享
2013/11/27 职场文书
班组长岗位职责范本
2014/01/05 职场文书
高考标语大全
2014/06/05 职场文书
企业环保标语
2014/06/10 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
护理自荐信
2019/05/14 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python