Exemple #1
0
int main(int argc,char* argv[] )  
{ 
	Subject* sub = new ConcreteSubject(); 
	Proxy *p = new Proxy (sub); 
	p->Request(); 
	system("pause");
	return 0;  
} 
Exemple #2
0
int main()
{
	Subject* subject = new ConcreteSubject();
	Proxy* proxy = new Proxy(subject);

	proxy->Request();
	return 0;
}
Exemple #3
0
void test_proxy()
{
	Subject* sbj = new ConcreteSubject;
	Proxy* pro = new Proxy(sbj);
	pro->Request();

	delete sbj;
	delete pro;
}
Exemple #4
0
///代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问.现实世界的代理人被授权执行当事人的一些事宜,无需当事人出面,从第三方的角度看,似乎当事人并不存在,因为他只和代理人通信。而事实上代理人是要有当事人的授权,并且在核心问题上还需要请示当事人。
///装饰者(Decorator):动态地给一个对象添加一些额外的职责,代理模式(Proxy):为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。。
///适配器Adapter 为它所适配的对象提供了一个不同的接口。相反,代理提供了与它的实体相同的接口,用于访问保护的代理可能会拒绝执行实体会执行的操作,因此,它的接口实际上可能只是实体接口的一个子集。
///1、“增加一层间接层”是软件系统中对许多负责问题的一种常见解决方法。在面向对象系统中,直接使用某些对象会带来很多问题,作为间接层的proxy对象便是解决这一问题的常用手段。
///2、具体proxy设计模式的实现方法、实现粒度都相差很大,有些可能对单个对象作细粒度的控制,有些可能对组件模块提供抽象代理层,在架构层次对对象作proxy。
///3、proxy并不一定要求保持接口的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。
void ProxyTest() {
    Subject* sub = new ConcreteSubject();
    Proxy* p = new Proxy(sub);
    p->Request();
}