設計モード-エージェントモード_Proxy Pattern

1070 ワード

プロキシモード
Provide a surrogate or placeholder for anther object to control access to it.(他のオブジェクトへのアクセスを制御するプロキシを提供します.)
UMLクラス図
C++コード実装
#include <iostream>
using namespace std;

class Subject {
public:
	virtual void Request() = 0;
};

class ConcreteSubject : public Subject {
public:
	void Request() { cout << "     ---> Request()" << endl; }
};

class Proxy {
public:
	Proxy(Subject* pSub): _pSub(pSub) {  }
	void Request() { _pSub->Request(); }

private:
	Subject* _pSub;
};

#include "Proxy.h"


int main()
{
	Subject *pSubject = new ConcreteSubject();
	Proxy* pProxy = new Proxy(pSubject);
	pProxy->Request();

	delete pProxy;
	delete pSubject;
	return 0;
}

Proxyモードの最大の利点は論理と実現の徹底的なデカップリングを実現することである.
Proxyモードの拡張:
一般エージェント:クライアントはエージェントロールのみにアクセスでき、実際のロールにはアクセスできません.
≪プロキシの強制|Force Proxy|ldap≫:実際のロールからプロキシ・ロールを見つける必要があります.そうしないとアクセスできません.
≪仮想エージェント|Virtual Agent|ldap≫:必要に応じてトピック・オブジェクトを初期化します.
動的エージェント:AOP、Spring AOPを参照.またはGoogle JAVAで動的エージェントを実現