問題タブ [proxy-object]

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 投票する
6 に答える
397 参照

c++ - std::string の実装におけるこの最適化は許可されますか?

の実装を考えていたところですstd::string::substr。それは新しいオブジェクトを返しますがstd::string、これは私には少し無駄に思えます。元の文字列の内容を参照し、暗黙的に に代入できるオブジェクトを返さないのはなぜstd::stringですか? 実際のコピーの一種の怠惰な評価。このようなクラスは次のようになります。

このクラスのパブリック インターフェイスは、実際の のすべての読み取り専用操作を模倣するstd::stringため、シームレスに使用できます。std::string次に、を受け取る新しいコンストラクターを持つことができるstring_refため、ユーザーは決して賢明ではありません。結果を「保存」しようとすると、コピーが作成されるため、参照がデータを指し、その背後で変更されても、実際の問題はありません。

アイデアは、次のようなコードです。

合計で 2 つ以下のstd::stringオブジェクトが構築されます。これは、多くの文字列操作を実行するコードにとって便利な最適化のようです。もちろん、これは だけに適用されるのではなくstd::string、その内容のサブセットを返すことができるすべての型に適用されます。

私の知る限り、これを行う実装はありません。

質問の核心は次のとおりだと思います。

必要に応じて暗黙的に に変換できるクラスが与えられた場合std::string、ライブラリ作成者がメンバーのプロトタイプを戻り値の型に変更することは標準に準拠していますか? または、より一般的には、ライブラリの作成者は、これらのタイプのケースで、最適化として通常のオブジェクトの代わりに「プロキシ オブジェクト」を返す余裕がありますか?

私の直感では、これは許可されておらず、プロトタイプは正確に一致する必要があります。戻り値の型だけでオーバーロードできないことを考えると、ライブラリの作成者がこれらのタイプの状況を利用する余地はありません。私が言ったように、答えはノーだと思いますが、私は尋ねると思いました:-)。

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

cocoa - プロキシオブジェクトを使用してオブジェクトを監視する

プロキシオブジェクトにオブザーバーを設定し、プロキシオブジェクトが指しているものを変更しても、実際のオブジェクトの変更を監視できるようにする必要がありますか?

例がこれを最もよく説明するかもしれません。次のことを考慮してください。

ヘッダー内:

初期化またはNIBメソッドからの起動時:

オブジェクトを変更する他のメソッド:

これにより、の変更は発生しませんaNewWidget。ただし、addObserver次のように割り当ての後にに移動すると、機能します。

最初のケースが機能しないのは、オブザーバーがプロキシオブジェクトの参照のメモリポインタを監視しているためであり、プロキシオブザーバーが追加された時点ではオブジェクトがないため、監視するものがないためだと思います。ただし、ウィジェットを初期化してそれを監視する場合、プロキシオブジェクトを割り当てると、aNewWidget割り当て後にオブザーバーを追加しない限り、変更は監視されません(もちろん、オブジェクトの変更時にオブザーバーを削除する必要があります)。

aNewWidgetまた、破壊された場合、このシナリオではどうなりますか?オブザーバーはプロキシ上にあるため、オブジェクトを破棄する前にオブザーバーを削除する必要がなくなりますか?(私はそうではないと思います)。

MyController理想的には、プロキシにオブザーバーを設定し、クラスがなくなる場合を除いて、オブザーバーの追加と削除を心配することなく、プロキシオブジェクトに必要なウィジェット参照をスワップインおよびスワップアウトできるようにしたいと思います。Deallocでのオブザーバーの削除。

ヘルプ/コメント/アドバイスをいただければ幸いです。

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

php - オブジェクトを他のオブジェクトに置き換えます

遅延読み込みメカニズムを使用するデータベース抽象化レイヤーを構築したいとします。

レイヤーにルート オブジェクトをロードするように要求すると、レイヤーはその外部表現をロードし、それ自体を構築します。

次に、特定のリンクされたオブジェクトが存在することを何らかの形で識別します。すべてを事前にロードするのはコストがかかる可能性があるため、関連するオブジェクトのプロキシを確立しました。そのようなプロキシは通過できるはずです。

このようなプロキシで最初のメッセージが呼び出されると、その外部表現が読み込まれ、それ自体が構築されます。プロキシへの参照が渡された可能性があるため、作成されたオブジェクトは既存のプロキシ オブジェクトをインプレースで置き換える必要があります。

PHP でオブジェクトを別のオブジェクトに置き換えることはできますか?

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

node.js - ES6 プロキシは配列インデックスをインターセプトできません

これが私のテストコードです(次を使用して実行しnode --harmony-proxies foo.jsます:

最後の 2 行で 5 が出力されないのはなぜですか? プロキシが整数のように見えるプロパティをインターセプトできないのはなぜですか? それは実装のバグですか、それとも指定方法ですか? 独自の配列 (スパース配列など) を実装できるように、配列インデックスをインターセプトする別の方法はありますか?

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

java - 既存の SOAP Web サービスに対する REST ラッパーの構築

私のチームは、既存の SOAP ベースの Web サービスに対する REST サービス ラッパーを開発しています。SOAP サービスの内部構造は正確にはわかりません。WSDL ファイルにアクセスできるだけです。REST サービス ラッパーは、1 対 1 のマッピングになります。

REST サービスと呼ぶことを許可してください。この REST サービスは Tomcat にデプロイされ、多くのクライアントが同時にアクセスします。

現在の実装では、クライアントごとにプロキシ オブジェクトを作成します (SOAP WSDL プロキシ クラスを使用)。このプロキシ オブジェクトは、SOAP API を呼び出すために使用されます。SOAP には、プロキシ オブジェクトを介した認証の詳細バインディングが必要です。そのため、セッションを確立するための最初の REST 呼び出しを行いながら、実行時に各クライアントのこれらのオブジェクトをメモリに保存しています。

保存されたオブジェクトは、実行時に SessionID 識別子を使用してフェッチされます。問題は、これらのプロキシ オブジェクトが大量のメモリ チャンクを占有し、少数の REST クライアントしかサポートされていないことです。(デフォルトの 64 MB では、19 個の REST クライアントしか実行できません)。これは、アプローチを変更したい問題であり、あなたの提案が必要です。

より良い解決策があれば教えてください。DB にオブジェクトを格納する必要はありません。

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

dart - ダーツプロキシオブジェクトは、型付き変数に割り当てることができますか?

次のテストコードがあります。

プロキシに関するAPIサイトで読んだことから、実行時にTypeErrorを取得せずにプロキシを何かに割り当てても問題ないと思いましたが、ここではそうではありません。TypeErrors をスローせずにプロキシを何かに割り当てることができない場合、プロキシに本質的に必要なものを実装させることのポイントは何ですか。ドキュメントでは、プロキシを任意の変数型に割り当てることは静的型エラーではないと述べています。

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

c# - その場でプロキシ オブジェクトを生成します (指定されたオブジェクトから派生したクラスをプログラムで生成し、単一のメソッドをオーバーライドします)。

次のことを行うメソッドを作成したいと思います。

  1. パラメータとして任意のインスタンスを取ります
  2. 渡されたインスタンスと同じ方法で、すべてのプロパティとメソッドを提供するラッパー インスタンスを生成します。
  3. 1 つのメソッドを別の実装でオーバーライドします
  4. 生成されたインスタンスを返します

これは、ORM が作成するプロキシ オブジェクトに非常に似ています。通常、これらは実際のモデル クラスを返しませんが、遅延読み込みなどを除いて同じように動作するプロキシ オブジェクトを返します。

そこに適したものはありますか?(CodeDom を見ましたが、メソッドの実装のために発行する必要があるオペコードも見ました...)

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

c# - 別のセッションで遅延プロパティ (プロキシ オブジェクト) を持つオブジェクトを更新する方法は?

セッションで遅延プロパティを持つオブジェクトを取得しようとし、別のセッションでそれを更新しようとしました。しかし、それはError: No persister for SecUserProxy (actual class is SecUser)で失敗しました

私はNHibernate 3.4を使用しています。私がググったとき、私はそれが修正されたバグであることを知りました。

また、プロキシ オブジェクトが INhibernateProxy を実装している場合、NHibernate を使用してオブジェクトのプロキシを解除できるというこの投稿も見つけました。NHibernate はプラグ可能なプロキシ ファクトリ (Castle、LinFu など) をサポートしなくなったため、内部のものを使用します。内部のものはおそらく INhibernateProxy であると想定しています

したがって、オブジェクトを次のように更新する新しいセッションで次のことを行いました。

これと同じオブジェクトを取得することを見込んでいますが、実際のタイプ、つまり SecUser を使用して、エラーなしで更新できるようにします。ただし、それでもプロキシ オブジェクトが返されます。

何が起こっているのか理解できませんか?

更新: 「secUserobj」が INhibernateProxy ではないことに気付きました。では、別のセッション内でオブジェクトを更新するにはどうすれば INhibernateProxy にできますか?

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

java - Javaでオブジェクトプロキシまたはクラスプロキシを実装するには?

プロジェクトで .class ファイルを拡張する必要があり、単純なメソッドをオーバーライドする必要があります。いくつかの .jar パッケージにあるクラス A があるとします。クラス AI の test() メソッドをオーバーライドしたいのは、A のサブクラス B を作成してオーバーライドすることです。今、私のアプリケーションパッケージ(.jarです)で、クラスAのオブジェクトが作成されます。このオブジェクトは、クラスAのメソッドを呼び出します。しかし、クラスBのメソッドを呼び出したいです。

私の考えは、アプリケーション全体でオブジェクトの作成をプロキシすることです。その時点でクラスAのオブジェクトが作成されるたびに、クラスBのオブジェクトを作成し、クラスAに引き渡されるように構成したいと考えています。

このタイプのメカニズムを実装するのを手伝ってください。