代理模式
保护代理
保护代理其实是一个静态代理,本文用c++实现。关于动态代理例子,求恕在下功底尚浅,c++太难实现了。
一个例子:
现在有一个订单系统,要求是:一旦订单被创建,只有订单的创建人才可以修改订单中的数据,其他人不能修改。
相当于现在如果有了一个订单对象实例,那么就需要控制外部对它的访问,满足条件的可以访问,而不满足条件的就不能访问了。
先画uml图:
我们定义了OrderApi抽象接口类,提供如上图所示六种纯虚函数(接口)。其中Order是我们真正的目标对象,OrderProxy是我们的代理对象。
代码实现:
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
class OrderApi{
//订单对象抽象接口类
public:
virtual string getProductName() = 0; //获取订单产品名
virtual void setProductName(string ProductName,string User) = 0; //设置订单订购的产品名
virtual int getOrderNum() = 0;//获取订单数量
virtual void setOrderNum(int OrderNum,string User) = 0; //设置订单订购数量
virtual string getOrderUser() = 0;//获取创建订单人员
virtual void setOrderUser(string orderUser,string User) = 0 ;//设置创建订单人员
//User 为操作人员
};
//