問題タブ [visitor-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.
oop - 翻訳者パターン
以前の仕事で、マネージャーは、データを DataTable からオブジェクトに変換するための Translator パターンの使用を提案しました。基本的に、Translator クラスには静的 (つまり、クラス) メソッドしかないため、関数呼び出しの集合体でした。私の最初のアプローチは、DataTable 行を引数として取り、データに対応するインスタンスを作成できる各オブジェクトのコンストラクターを実装することでした。
彼は、Translator クラスは Microsoft によって提案されたものであり、コードのより優れたモジュール性を提供したと述べました。この点はわかりますが、同時に非常に非オブジェクト指向のアプローチのようにも思えます (ビジター パターンにも同様の特徴がありますが)。
このパターンを使用したことがある人はいますか?どう思いますか? 長所と短所?
google-analytics - GoogleAnalyticsに関する質問
以下のコードは、GoogleAnalyticsでユーザーアカウントを取得するためのものです。私の質問は、コードの代わりに何を置き換えるか、そして以下のga:AccountName
コードga:ProfileId
でサイトにログインしている訪問者を見つけることです。
java - Java Enums - Switch ステートメントと Enums のビジター パターン - パフォーマンスの利点は?
このパフォーマンスベースの問題に対する答えを見つけるために、私は何日も探し回っています。
これまでインターネットを掘り下げた後、Javaで列挙型を使用する方法がいくつかあることを知りました。確かに、スターターとして、switch-caseステートメントで列挙型を使用したいと思うでしょう。これにより、コードが明確になり、理解が深まります。しかし一方で、Enum のVisitor パターンスタイルの実装もあり、これにより型の安全性と拡張性が保証されます。
そうは言っても、この質問の背後にある元のアイデアに戻ると、これまでのところ、switch-case コンストラクトが Enum を使用して適切に設計されている場合、ケースの値がスパースではなく、Enum 宣言が同じであることを学びました。コンパイル ユニットを switch-case ステートメントとして使用する場合、Java コンパイラは、ジャンプ テーブルなどの構造を実装することにより、生成されたバイトコードに対して何らかの最適化を実行します(リンクを失った Sun の Web サイトで、ここや他の場所で説明されています)。現在、これにより、複数/ネストされた if-else 構造と比較して、パフォーマンスが確実に向上します。
私の質問は、Java が結果のバイトコードで Enums のビジター パターン ベースの実装をどのように実装するか、およびスイッチケースベースの実装と比較してパフォーマンスがどの程度向上するかということです。
また、列挙型が将来的に成長する可能性があり、パフォーマンスにも熱心であることを考慮して、どのタイプの実装を優先する必要がありますか。現在、Enum には 19 と奇数の定数があります。
編集
ゲームの変数に関する情報を格納するクラスがあります。Enum型 の変数の 1 つ。
}
後で、ロジックから情報を分離することに気付き、別のクラスを作成し、Enum ShapeをGameObjectからこの新しいクラスGraphicModelに移動し、そこにswitch-caseを配置する代わりに、定数固有のメソッドを実装しました。はい、この変更の後、どちらのクラスにも適切なインポートステートメントを入れました。
後で、ここで提案されているように、訪問者パターンに基づいてこれを実装しました
それで、私が知る必要があるのは、どの実装方法がより効率的かということです? 確かに、コンパイル時にswitch-caseをジャンプ テーブルに変換するには、Javaで同じコンパイル ユニット内にenum宣言とswitchステートメントの両方が必要です。GraphicModelクラスでスイッチベースの実装または定数固有のメソッド実装を使用する必要がありますか? むしろ、明確にするために、パフォーマンスの違いは何ですか?
c++ - 目的-C++メモリの問題
私は記憶の問題を抱えています。
私はC++ライブラリ(EyescaleのEqualizer)を持っており、トラバーサルビジターパターンを使用して、クラスに新しい機能を追加できるようにしています。
私はついにそれがどのように機能するかを理解しました、そして私はオブジェクトの1つからプロパティを返すだけのVisitorを持っています。(私はそれらがどのように割り当てられているのかわからないので)。
それで。
私の小さなコードはこれを行います:
これが問題です。
しかし、私がこれを行う場合:
//正直なメモリ位置であり、XCodeのデバッガウィンドウで検証されたようにwを設定します。
oswでも同じことをします。
理解できません。(gdb)で何かが機能するのに、コードでは機能しないのはなぜですか?
このファイルは完全にcppファイルですが、ブロッキングをオフにする必要があるため、objc++で実行されているようです。
ヘルプ!?ここでは、C++またはObj-Cのいずれかでメモリ管理の基本的なことが欠けているように感じます。
[編集]
channel-> getWindow()はこれを行うことになっています:
C ++のみのアプリケーションから実行した場合も、コードは正常に実行されます。
[編集]
いいえ...プラグインとして実行するのにうんざりしていたので、単純なスタンドアロンプログラムを作成してみました。デバッグが面倒です。
いいえ、C++プログラムでも実行されません。だから私は自分が間違っていることについて本当に途方に暮れています。
ありがとう、
--Stephen Furlani
delphi - Delphi Enterprise:循環参照なしでビジターパターンを適用するにはどうすればよいですか?
Delphi 2009 Enterpriseを使用して、モデルビューでGoFビジターパターンのコードを作成し、コードを2つのユニットに分けました。1つはドメインモデルクラス用、もう1つはビジター用です(ビジターの実装ごとに他のユニットが必要になる可能性があるため、 1ユニット?'大きな泥だんご'先!)。
ビジネスモデルクラスの2番目のユニット
問題がわかりますか?円形のユニット参照。エレガントな解決策はありますか?CRの問題を回避するために、基本インターフェイス/基本クラス定義を備えた「n + 1」個の追加ユニットと、ハードキャストのようなトリックが必要だと思いますか?
python - Python で抽象構文ツリーのビジター パターンを作成するには?
同僚から、AST をナビゲートするためのビジター パターンを作成するよう提案されました。どうすればそれを書き始めることができるか、誰か教えてもらえますか?
私が理解している限りでは、AST の各ノードには、visit()
何らかの形で (どこから?) 呼び出されるメソッド (?) があります。以上で私の理解は終わりです。
すべてを単純化するために、ノードRoot
、Expression
、Number
がOp
あり、ツリーが次のようになっているとします。
訪問者パターンがこのツリーにアクセスして出力を生成する方法を考えられる人はいますか?
ありがとう、ボダ・シド。
c++ - テンプレート化された文字列型を処理するC++ビジターパターン?
ビジターパターンを使用してオブジェクトのコンテンツをシリアル化しようとしています。しかし、私が打っている問題の1つは、文字列にアクセスしているときです。私の文字列は、STLのbasic_stringに似たテンプレートタイプです。だから次のようなもの:
非常に多くの異なるテンプレート文字列タイプを使用できるため、それらを訪問者インターフェイスに追加することはできません。それはばかげているでしょう。しかし、C ++では仮想メソッドでテンプレートパラメーターを使用できないため、VisitStringメソッドにテンプレートを追加できません。
では、これを回避するための私のオプションは何ですか?
編集:私はいくつかの基本的なコードを追加しました
java - 訪問者パターンの目的と例
訪問者パターンとその用途について本当に混乱しています。このパターンを使用する利点やその目的を視覚化できないようです。可能であれば誰かが例を挙げて説明できれば、それは素晴らしいことです。
c++ - Visitor 使用中のコンテナの変更
Visitor の現在の位置をコンテナーに格納するための STL に似たイテレーターを使用して、C++ で Visitor パターンを実装しました。今、コンテナを繰り返しながら変更したいと思います。現在アクセスしているコンテナであっても、コンテナからアイテムを削除することに特に興味があります。
明らかに、これは訪問者の内部イテレータを無効にします。これはまさにこのアイテムを指していたからです。現在、すべてのイテレータのリストをコンテナに保存し、リストに何かが追加または削除されるとすぐにそれらを更新します。ある意味で、これはイテレーター (Observer として) とリスト (Observable として) に適用される Observer パターンに似ています。
別の方法として、現在のアイテムに何が起こったのか、どのように反復処理を進めるのかについて、visitor() メソッドが Visitor に何らかのヒントを返すようにすることを検討しましたが、それもあまり良い考えではないように思えます。次のアイテムを見つけることに本当に関心があります。
だから、私の質問は、アイテムがコンテナに追加されたり、コンテナから削除されたりしても、訪問者を動かし続ける最善の方法は何ですか.
よろしく、フロリアン
更新: コンテナーに対して 1 つのビジターが実行されていますが、visit() メソッド内では、同じコンテナーに対して任意の数の追加イテレーターを使用できます。コンテナ内のアイテムのいずれかが削除された visit() の呼び出しから戻った後でも、訪問者にコンテナ内の残りのアイテムを続行してもらいたいです。
javascript - Web サイト訪問者の閲覧習慣の追跡
質問のためにこのサービスを初めて使用します。すでに答えられていることを尋ねていないことを願っています。検索エンジンで質問の答えを見つけようとしましたが、見つかりませんでした。
私の質問は次のとおりです。
php、javascript、または実際に何かを使用して、ユーザーがブログ/ウェブサイトのページをどのように閲覧しているかを追跡することは可能ですか? 具体的には、ユーザーのブラウザーが同じページのコンテンツの特定のセクションを読むのに費やした時間を追跡したいと考えています。
たとえば、次のような質問に答えます: 誰かが私の記事の序文と結論を読むのにどれくらいの時間を費やしましたか? (同じページにあります)
基本的に、ブラウザが現在ページを下にスクロールしている場所を見て、Web 訪問者の「目」を追跡します。
私が少し初心者だったらごめんなさい!あなたが私に提供できる私の問題について助けてくれてありがとう!^_^