13.代理模式
趁着还没睡觉,螃蟹决定把代理模式也弄完。今天学的原型模式就是对象克隆,而现在学的代理模式就是对象通信。代理模式比较好理解,就是你要买苹果手机,肯定不会直接和苹果公司交易,而是通过代理商来交易。代理对象与原对象继承同一个基类,可以有扩充,可以很方便的解决对象访问中间处理的问题,特别是多数据库连接的设计等。
参考项目模块:数据库操作模块
这里螃蟹使用mysql数据库访问来实现一个简单的代理模式访问数据库。
用户对象:User.class.php
<?php
class User{
public $username = '';
public $sex = '';
}
?>
<?php
interface DB{
function save();
function delete();
}
?>
<?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>';
}
}
?>
<?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();
}
}
?>
<?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 已经连接
螃蟹 添加成功
螃蟹 删除成功