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 相关文章推荐
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
php中使用sftp教程
Mar 30 PHP
php生成rss类用法实例
Apr 14 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php使用正则验证中文
Apr 06 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 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脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
javascript add event remove event
2008/04/07 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
实例Python处理XML文件的方法
2015/08/31 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
python mysql中in参数化说明
2020/06/05 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
澳大利亚玩具剧场:Toy Playhouse
2019/03/03 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
项目总经理岗位职责
2014/02/14 职场文书
群众路线领导对照材料
2014/08/23 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
python实现A*寻路算法
2021/06/13 Python
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS