Proxy は、 構造に関するデザインパターンの一つで、 クライアントが使う本物のサービス・オブジェクトの代理として機能するオブジェクト (プロキシー) を提供します。 プロキシーは、 アクセス制御、 キャッシングなど、 何らかの作業を行なった後、 リクエストをサービス・オブジェクトに渡します。
プロキシー・オブジェクトはサービスと同じインターフェースを持ち、 クライアントにとっては、 本物のオブジェクトと交換可能です。
概念的な例
Nginx のようなウェブ・サーバーは、 アプリケーション・サーバーのプロキシーの役を果たせます:
- アプリケーション・サーバーに対するアクセス制御を行う。
- レート制限を行える。
- リクエストのキャッシングを行える。
server.go: サーバー
nginx.go: プロキシー
application.go: 実際のサーバー
main.go: クライアント・コード
output.txt: 実行結果