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 相关文章推荐
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
php 分页类 扩展代码
Jun 11 PHP
PHP处理会话函数大总结
Aug 05 PHP
php简单备份与还原MySql的方法
May 09 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
PHP7创建销毁session的实例方法
Feb 03 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
php md5下16位和32位的实现代码
2008/04/09 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
python 多线程应用介绍
2012/12/19 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
WxPython建立批量录入框窗口
2019/02/27 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
物业管理个人自我评价
2013/11/08 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
学术研讨会主持词
2015/07/04 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
四则混合运算教学反思
2016/02/23 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers