問題タブ [proxy-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
354 参照

c# - EF Lazy Loading は実際のプロキシ パターンですか?

私は、EF がProxy Patternを使用して遅延読み込みを実装していることを知っています。

1.スタンドプロキシパターン:

ここに画像の説明を入力

プロキシ パターンでは、[Proxy] は[RealSubject] から継承されません

2.EF

遅延読み込みでは、[Proxy] クラス[RealSubject] から継承されます。

したがって、これはスタンド プロキシ パターンとまったく同じではありません。

しかし、なぜ彼らはそれをプロキシ パターンと呼んだのでしょうか?

0 投票する
2 に答える
297 参照

java - プロキシ パターン: 実際のオブジェクトを作成するよりも効率的な方法は?

次の例では、ウィキ ブックからhttps://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Proxy

実際のオブジェクトを作成してそこから表示画像を使用するよりも、これがどのように高速/効率的であるかはわかりません。とにかくプロキシがdisplayImageメソッド内で実際のオブジェクトを作成するためですか?

プロキシを使用しなかった場合、1 つ (実) ではなく 2 つのオブジェクト (プロキシと実) をインスタンス化する必要があるため、プロキシ パターンはメモリを節約しませんか?

0 投票する
1 に答える
729 参照

java - Spring Inheritance ベースのプロキシ構成を正確に機能させるには?

私は Spring Core 認定のために勉強していますが、プロキシの概念に関連するいくつかの疑問を見つけています。

そのため、教材で次のクイズを見つけました。

次のメソッドを含むJava構成クラスがあります。

ご覧のとおり、 TransferServiceImplオブジェクトを作成して返す、それぞれtransferService1()およびtransferService2()という名前のtransferService()の 2 つの異なる実装があります。

最初のものは、新しいTransferServiceImplオブジェクトを作成し、それに対してsetAccountRepository()メソッドを呼び出します。

2 つ目は単純に、新しいJdbcAccountRepositoryオブジェクトをコンストラクターに渡すTransferServiceImplを作成します。

それは私に尋ねます **前の2つの方法の中で最も良い実装はどれですか?

提供される答えは次のとおりです。専用メソッドへの呼び出しを優先します。ですから、最初の実装が最善の方法であると言っていると思います。

AccountRepository Bean はシングルトン(Spring の Bean の標準スコープであるため) であるが、JdbcAccountRepository()は 2 回以上呼び出される可能性があることを説明しています (たとえば、前のコード スニペットでは、メソッドが呼び出されたときに呼び出されます)。 transferService1()およびtransferService2()であり、その場合、 AccountRepositorysingletonでなければならないため、これは問題になります。

本当ですか?または、何か不足していますか?

したがって、起動時に foreach 構成クラス ( @Configurationで注釈が付けられている) が構成クラスを拡張する子クラスを作成することを収集します。

たとえば、次の構成クラスがあるとします。

私のAppConfigを拡張する次のクラスが自動的に作成されます。

したがって、子クラスはエントリ ポイント (呼び出されるメソッドは、子クラスで定義されたものです) であり、疑似コードは次のようになります。

したがって、Spring がシングルトンの問題をどのように処理できるかは明らかです。構成クラスを拡張するプロキシ クラスでメソッドを呼び出し、要求された Bean が applicationContext に存在する場合はこの Bean を返し、そうでない場合は作成するスーパー クラスで同じメソッドを呼び出します。新しい Bean をアプリケーション コンテキストに配置します。

プロキシ パターンに基づく継承の正しい意味ですか、それとも何か不足していますか?

0 投票する
1 に答える
59 参照

java - プロキシ デザイン パターンのコードの ISubject と Operation() は何ですか?

以下のコードを使用してベースを知りたい: 1. ISubject と Operation() 2. realSubject: RealSubject と 3. Operation() Proxy デザイン パターンの UML ダイアグラムの realSubject.Operation()

リンク

0 投票する
3 に答える
655 参照

design-patterns - プロキシ パターンに継承が必要なのはなぜですか?

ウィキペディアの UML ダイアグラムを見ると、プロキシ クラスとサブジェクト クラスの両方が同じインターフェイスを実装しています。

私が理解していることから、プロキシ クラスの目的は委譲です。これは合成によって行うことができます。委譲されたクラスは、同じインターフェースを実装する必要はありません。

サブジェクト クラスがプロキシ クラスと同じインターフェイスを実装しなければならない理由はありますか?