問題タブ [instantiation]
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.
java - Java:インスタンス化または継承?
私は自分のアプリケーションの1つにロギングサービスを書いていますが、他の多くのアプリケーションがこれを使用すると確信しています。その場合、アプリケーションでクラスを拡張し、元のクラスですべてのロギングをデフォルトで有効にする(アプリケーションのエントリポイントや出口ポイントなどのロギングが必要になるため)か、アプリケーションをインスタンス化するのが理にかなっていますか?新しいロギングオブジェクトを作成し、必要に応じてロギングステートメントを配置しますか?
design-patterns - 特定のクラスの繰り返し構成: サブクラスまたはファクトリを作成する方が良いですか?
簡単な要約: クラスの特定のインスタンス化を事前に定義したい場合、サブクラスまたはファクトリを作成する方が良いですか?
問題のコンテキスト
多数のプロパティを持つビュー ヘルパー クラス MyWebserviceUrl があります。その目的は、URL を生成することです。
このクラスのインスタンスを事前に構成できるようにしたいので、 の同じファミリに対して多くの を実行する必要がsetThis()
ありませsetThat()
ん。このタイプに関連するデフォルト。MyWebserviceUrl
a
a
MyWebserviceUrl
このようにサブクラスでこれを解決できます
MyWebserviceUrl
「Foo」のようなパラメーターを指定すると、オブジェクトを構成できるファクトリーを作成することもできます。
私の質問:
- サブクラスのルートに行くべきですか、それとも工場のルートに行くべきですか?
- 工場に助言する場合、これは
- 別のビュー ヘルパー、
- 通常のファクトリ クラス、または
- メソッド
factory($name)
でMyWebserviceUrl
?
補足:私は現在 Zend Framework で開発していますが、この質問はより一般的だと思います。
edit1 →<em>より具体的に言うと、一部のプロパティをデフォルトに設定し、残りをその場で設定する必要があるだけです。
c++ - ここからインスタンス化されたエラー
私のコンパイラは、私が完全に理解できないこのインスタンス化エラーで私を苦しめています。
私はテンプレートクラスlistItemを持っています:
たとえば、次のような非プリミティブデータ型でオブジェクトを初期化しようとすると:
私のコンパイラは常にこのエラーをスローします.エラーはプリミティブ型ではスローされません。
コンパイラからの出力は次のとおりです。
私はあなたに迷惑をかけませんが、私は何か愚かなことで2時間を過ごしたくありません.....
java - クラス内またはクラス外の値チェックロジック?
一連の Web サイトで RSS ストリームを取得するために誰かが入力したい次のスケルトン クラスを取り上げます。
ここで、refreshTime が 0 より大きくなければならず、rssURL が有効な http アドレスでなければならないことを考えてみましょう。
明白な反射は、コンストラクター内にロジックをチェックするいくつかの値を持つことです。ただし、コンストラクターへの呼び出しは、何が起こってもオブジェクトをインスタンス化します。これは、値がその仕事をすることを許可しない場合、オブジェクトが役に立たなくなることを意味します。これは、オブジェクトを最終的にダンプまたは再利用する必要があることも意味します。
そこで、この件に関するいくつかの質問を以下に示します。
- 一部のクラスは、おそらくプライベート コンストラクターと組み合わせて getInstance() メソッドを強制するのはなぜですか? よく覚えていれば、1 つの例は GregorianCalendar でしょう。
- これと同じアプローチをどのような場合に使用しますか?
- ほとんどの場合、コンストラクターにチェックロジックがありますか?
- もしそうなら、ドメインモデルの永続コンテキストで使用されるエンティティスタイルのクラスにこれを適用しますか?
すべての回答を歓迎します。最も一般的な方法を明確に理解することは興味深いでしょう。
php - PHP: 別のクラス内から引数を使用してクラスをインスタンス化する方法
別のクラスのインスタンス内から引数を使用してクラスをインスタンス化する必要がある状況にいます。プロトタイプは次のとおりです。
ここで、以下のクラスのcls関数を使用して、上記のクラスをインスタンス化する必要があります。
引数を渡しながらテストクラスのインスタンスを作成しようとすると:
エラーが発生します:引数1と2がありません。最初の引数のみが渡されます。
コンストラクター関数に引数を持たないクラスをインスタンス化すると、これはうまく機能します。
経験豊富な PHP 開発者にとって、上記は大きな問題にはなりません。助けてください。
ありがとう
wpf - StaticResources がある場合、その型を介して WPF 要素をインスタンス化するにはどうすればよいですか?
デザイナーのリフレクションを介して WPF 型 (UserControl や Page など) をインスタンス化する必要があります。私が抱えている問題は、Activator.CreateInstance を使用してこれらをインスタンス化しようとすると、最終的にStaticResourceマークアップ拡張によってスローされた例外をラップするTargetInvocationExceptionを取得することです。
明確化: 型は、実行時に読み込まれる別のアセンブリにあります。
どうやら、型の定義で静的リソースが定義されている場合でも、 Activator.CreateInstanceは{StaticResource XXX}マークアップ拡張を使用する型をインスタンス化できないようです。
したがって、次のタイプの定義 (タイプ + xaml ファイル) しかない場合:
実行時にこれをどのようにスピンアップしますか?
ところで、代わりに DynamicResource を使用することを要求することは受け入れられません。Visual Studio はこれを必要としますか? それでも、VS は WPF フレームワーク要素のコピーをスピンアップしてデザイナーに貼り付けることができます。
この問題を示すサンプル アプリケーション (ベータ 2、申し訳ありません) を次に示します。
http://cid-f8be9de57b85cc35.skydrive.live.com/self.aspx/Public/ResourcesGoKaboom.zip
アプリは、リソース ディクショナリに描画されたページを読み込もうとします。Application.LoadComponentとActivator.CreateInstanceを使用して動的にロードしようとすると、両方とも失敗します。
さて、上記の例は問題なく動作します。問題は、要素内で定義されたリソースを参照する要素の属性内で StaticResource を使用していたことです。
私を投げていたのは、これがビジュアルスタジオ内で機能することでした。 そのため、デザイナーではすべてが大丈夫に見えましたが、IRL ではすべて洋ナシの形をしていました。私見、これはバグであり、そのように報告しました:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=519244
VS の失敗が失敗したのか、それとも StaticResource 拡張機能が VS では機能していたが IRL では機能していなかったのかは不明です。
wpf - この要素のインスタンス化の方法は何と呼ばれますか?
コードビハインドでUIElementを作成するときはいつでも、次のようなことをします。
しかし、それから私はどこかでこの構文を見て、それが何と呼ばれているのか知りたいと思いました。.NETの本で使用されているのを見たことがありません。
簡潔なので、これは明らかに素晴らしいことです。だから私の質問は次のとおりだと思います:
- それは何と呼ばれていますか?
- この方法でUIElementをインスタンス化することに不利な点はありますか?
また、CornerRadiusやStrokeThicknessなどのプロパティを設定する正しい方法を見つけるのに苦労し、#1の答えがよりインテリジェントな検索クエリを作成するのに役立つかもしれないと思いました。
php - PHP:参照によってクラスをインスタンス化しますか?
古い PHP 4.x コードを PHP 5.3 用に変換しています。私は以下に出くわしましたが、それが何をするのかわかりません。
それとの違いは何ですか:
c++ - インスタンス化後のテンプレートの特殊化?
私の完全なコードは長すぎますが、ここに私の問題の本質を反映するスニペットがあります:
このコードをコンパイルすると、次のエラーが発生します。
ここで、これらのクラス用に std::hash を特殊化する必要があります (標準の std::hash 定義にはユーザー定義型が含まれていないため)。これらのテンプレートの特殊化を class の定義の前に移動するとBPCFGParser
、さまざまなことを試みたときにさまざまなエラーが発生し、どこか ( http://www.parashift.com/c++-faq-lite/misc-technical-issues .html ) 私はそれを読みました:
クラスをテンプレート パラメーターとして使用する場合は常に、そのクラスの宣言を完全にする必要があり、単純に前方宣言するのではありません。
だから私は立ち往生しています。BPCFGParser
定義後にテンプレートを特殊化することはできません。また、定義前にテンプレートを特殊化することもできませんBPCFGParser
。どうすればこれを機能させることができますか?
特殊化を BPCFGParser 内の内部クラスに移動する必要があります。そうすることで、両方の要件が満たされます。
答えてくれてどうもありがとう:)
hash
class は namespace 内で定義されますstd
。hash
名前空間以外のスコープでテンプレートを特殊化することはできません。以下でも:
動作しませんでした。ただし、特殊化を で囲むとnamespace std {}
、次の奇妙なエラーが発生します。
velocityreviewsで与えられた回答で、誰かが名前空間をクラス内で定義できないと主張しています。だから私はまだ立ち往生しています。