文档章节

螃蟹学PHP设计模式之代理模式

行走的螃蟹
 行走的螃蟹
发布于 2014/08/14 00:54
字数 478
阅读 53
收藏 0

13.代理模式

趁着还没睡觉,螃蟹决定把代理模式也弄完。今天学的原型模式就是对象克隆,而现在学的代理模式就是对象通信。代理模式比较好理解,就是你要买苹果手机,肯定不会直接和苹果公司交易,而是通过代理商来交易。代理对象与原对象继承同一个基类,可以有扩充,可以很方便的解决对象访问中间处理的问题,特别是多数据库连接的设计等。

参考项目模块:数据库操作模块

这里螃蟹使用mysql数据库访问来实现一个简单的代理模式访问数据库。

用户对象:User.class.php

<?php 

class User{
	public $username = '';
	public $sex = '';
}

?>



数据库访问接口:DB.interface.php
<?php 

interface DB{
	function save();
	function delete();
}

?>



mysql操作类:Mysql.class.php
<?php 
require_once('DB.interface.php');

class Mysql implements DB{
	
	private $data = '';
	
	public function __construct($db,$table,$data){
		$this->data = $data;
		echo $db.'.'.$table.' 已经连接<br>';
	}
	
	public function save(){
		echo $this->data->username.' 添加成功<br>';	
	}
	
	public function delete(){
		echo $this->data->username.' 删除成功<br>';
	}
}

?>



mysql代理类: Mysql.proxy.php
<?php
require_once('Mysql.class.php');
class MysqlProxy implements DB {
	
	private $mysql = '';
	public function __construct($db,$table,$data){
		$this->mysql = new Mysql($db, $table, $data);		
	}
	
	public function save() {
		// TODO Auto-generated method stub
		$this->mysql->save();
	}
	
	public function delete() {
		// TODO Auto-generated method stub
		$this->mysql->delete();
	}

}
?>



测试文件:TestProxy.php
<?php 
require('User.class.php');
require('Mysql.proxy.php');


//模擬用戶
$user = new User();
$user->username = '螃蟹';
$user->sex = '男';

//調用代理
$proxy = new MysqlProxy('test', 'users', $user);
//保存
$proxy->save();
//刪除
$proxy->delete();
?>



测试结果:
test.users 已经连接
螃蟹 添加成功
螃蟹 删除成功



基本上代理模式的好处就是很好的保护被代理的对象,代理(虚拟对象)在调用真实对象之前拦截数据并处理后再去访问真实对象,对于网络请求方面应该会有很大用处的,因为HTTP服务器本身就是代理服务器。

© 著作权归作者所有

行走的螃蟹

行走的螃蟹

粉丝 33
博文 48
码字总数 23634
作品 0
杭州
程序员
私信 提问
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
2018/11/06
0
0
PHP设计模式(一):简介及创建型模式

我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设...

juhenj
2014/05/15
228
2
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
2018/06/24
0
0
设计模式已经陨落了?

你现在是坐在一个程序员旁边吗?如果是的话,那么在你读下面的段落之前,有一个简单的实验。让他们到一边去,问问他们两个问题并记录下答案。首先问他们“什么是设计模式?”然后再问“说出你...

oschina
2014/03/11
9.1K
69
学了那么多年设计模式依然不会用!那可真蠢!

什么是设计模式? 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决...

GitChat技术杂谈
2018/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux高级文件数据操作

cat :显示切割数据 -f:选择显示切割列; -s:比现实没有分割的行 -d:自定义分隔符 cut -d ‘ ’-f 1,3 a.txt : 以空格为分隔符显示第一列和第三列;这种情况不能分隔的行也会显示出来,如...

为何不可1995
24分钟前
0
0
在Javascript中Eval函数的使用

【eval()函数】 JavaScript有许多小窍门来使编程更加容易。 其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。 举个小例子: var the_unevaled_ans...

花漾年华
36分钟前
3
0
[日更-2019.5.22、23] Android 系统的分区和文件系统(二)--Android 文件系统中的文件

声明 Android系统中有很多分区,每个分区内的文件系统一般都不同的,使用ADB进入系统/目录下可发现挂载这很多的目录,不同的目录中可来自不同的分区及文件系统; 那么,就来分下这些目录里面...

小馬佩德罗
40分钟前
2
0
数组操作相关算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
今天
4
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部