0

私はJavaプロキシパターンと呼び出しハンドラーについて読んでおり、具象クラスの構築がクライアントで利用できることがどこでも見られます。

例えば、

//TwitterService service = (TwitterService) SecurityProxy.newInstance(new TwitterStub());
TwitterService service = new TwitterStub();
System.out.println(service.getTimelinePosts("abc"));

ユーザーは のインスタンスをTwitterStub直接作成し、メソッドにアクセスできます。クライアントを介して具象クラスの構築を公開しない、または回避する方法があるかどうか疑問に思っていましたか?

より良い方法はありますか?

4

1 に答える 1

1

GoF が言うように、プロキシ パターンの目的は、「別のオブジェクトへのアクセスを制御するためのサロゲートまたはプレースホルダーを提供すること」です。

したがって、特定のケースでは、特定のプロキシ インスタンスを直接作成しているということになります。そして、(クライアントとして) 特定のタイプのプロキシ オブジェクトが必要であることを知っている限り、それは問題ありません。

間接的なレベルが必要な場合は、さまざまなタイプのプロキシ オブジェクトを返す Abstract Factory パターンを使用できます。しかし、これまでのところ、プロキシ オブジェクトの理由は、他のオブジェクトの代わりに動作することです。

補足として、プロキシは、作成に費用がかかるオブジェクトがある場合に役立ちますが、そのような費用のためにメインアプリケーション機能を必ずしも不自由にしたくない場合があります。たとえば、1000 個の画像を含むドキュメントがあるとします。それらにプロキシを使用し、厳密に必要な場合 (つまり、それらが表示されている場合) にのみロードすることができます。また、一度に 1000 個の画像を読み取るオーバーヘッドなしで、ドキュメント全体を非常に高速にロードできます。

于 2016-04-08T15:17:08.397 に答える