タグ付けされた質問 「design-patterns」

設計パターンは、ソフトウェア設計で一般的に発生する問題に対する一般的な再利用可能なソリューションです。デザインパターンの実装に問題がある場合の質問には、このタグを使用します。テキストパターンマッチングに関する質問には、このタグを使用しないでください。このタグを実装の重い質問に使用する場合-実装が記述されているコード言語にタグを付けます。

3
どのデザインパターンをいつ使うべきですか?[閉まっている]
休業。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する 私はデザインパターンがとても好きですが、いつ適用できるかわかりません。私はデザインパターンが説明されている多くのウェブサイトを読みました。私はそれらのほとんどを理解していますが、自分の状況でパターンを認識するのは難しいと思います。 だから、私がこの質問をするのはそのためです。どのデザインパターンを使用するかについてのガイドラインや警報ベルはありますか? たとえば、作成する必要があるオブジェクトを決定するためにswitchステートメントを実行している場合は、おそらくファクトリーデザインパターンを使用する必要があります。したがって、この場合のswitchステートメントは、Factoryパターンを使用するための「警報ベル」です。 では、デザインパターンを決定するためのより多くの「警報ベル」を知っていますか?


14
なぜすべてのアクティブレコードが嫌いですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 OOPについてますます学び、さまざまなデザインパターンを実装し始めると、人々がActive Recordを嫌うケースに戻ってきます。 多くの場合、(Twitterを主な例として引用して)うまくスケールしないと言われますが、実際にうまくスケールしない理由を実際に説明する人はいません。および/または短所なしでARのプロを達成する方法(類似しているが異なるパターンを介して?) うまくいけば、これがデザインパターンに関する神聖な戦争にならないことを願っています-私が知りたいのは、****具体的に**** Active Recordの問題点だけです。 うまくスケーリングしない場合は、どうしてですか? 他にどんな問題がありますか?

7
なぜパブリッシュ/サブスクライブパターン(JS / jQuery)を使用するのですか?
そのため、同僚からパブリッシュ/サブスクライブパターン(JS / jQuery)が紹介されましたが、「通常の」JavaScript / jQueryよりもこのパターンを使用する理由を理解するのに苦労しています。 たとえば、以前は次のコードがありました... $container.on('click', '.remove_order', function(event) { event.preventDefault(); var orders = $(this).parents('form:first').find('div.order'); if (orders.length > 2) { orders.last().remove(); } }); そして、代わりにこれを行うことのメリットを見ることができました... removeOrder = function(orders) { if (orders.length > 2) { orders.last().remove(); } } $container.on('click', '.remove_order', function(event) { event.preventDefault(); removeOrder($(this).parents('form:first').find('div.order')); }); removeOrderさまざまなイベントなどで機能を再利用する機能が導入されているためです。 しかし、同じことをするのに、なぜパブリッシュ/サブスクライブパターンを実装して次の長さに進むことにしたのですか?(参考までに、jQuery tiny pub / subを使用しました) removeOrder …

15
Javaのifステートメントの長いリスト
申し訳ありませんが、これに答える質問は見つかりません。他の誰かが以前に質問したことはほぼ間違いありません。 私の問題は、組み込みデバイスを実行するためにいくつかのシステムライブラリを作成していることです。ラジオ放送でこれらのデバイスに送信できるコマンドがあります。これはテキストでのみ実行できます。システムライブラリ内には、次のようなコマンドを処理するスレッドがあります if (value.equals("A")) { doCommandA() } else if (value.equals("B")) { doCommandB() } else if etc. 問題は、それに対する多くのコマンドがあり、制御不能なものに素早くスパイラルすることです。外を見るのは恐ろしく、デバッグするのは苦痛であり、数か月で理解するのは面倒です。

14
単一ページのJavaScript Webアプリケーションのアーキテクチャ?
複雑な単一ページのJS Webアプリケーションをクライアント側でどのように構成する必要がありますか?具体的には、モデルオブジェクト、UIコンポーネント、コントローラー、サーバーの永続性を処理するオブジェクトの観点から、アプリケーションをきれいに構造化する方法に興味があります。 MVCは最初は適合しているように見えました。しかし、UIコンポーネントがさまざまな深さでネストされている場合(それぞれが独自の方法でデータをモデル化するために作用/反応し、それぞれがイベントを生成して、それら自体が直接処理する場合と処理しない場合があります)、MVCをきれいに適用できるようには見えません。(ただし、そうでない場合は修正してください。) - (この質問の結果、ajaxの使用に関する 2つの提案が出されました。これは、最も簡単な1ページアプリ以外には明らかに必要です。)


6
ASP.NET MVC-ビジネスロジックはコントローラーに存在する必要がありますか?
Derik Whitaker が数日前に記事を投稿しましたが、これは私がしばらくの間興味を持っていたポイントです。ビジネスロジックはコントローラーに存在する必要があるのでしょうか。 これまでに見たすべてのASP.NET MVCデモでは、リポジトリへのアクセスとビジネスロジックをコントローラーに配置しました。中には検証を投げる人もいます。その結果、かなり大きなコントローラーが肥大化します。これは本当にMVCフレームワークを使用する方法ですか?これは、多くの重複したコードとロジックがさまざまなコントローラーに分散することになるだけのようです。

14
ユーティリティクラスは悪ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する 私はこのスレッドを見ました 「Utilities」クラスが邪悪な場合、どこに汎用コードを配置すればよいですか? そして、なぜユーティリティクラスは邪悪なのでしょうか? 何十ものクラスのドメインモデルがあるとします。インスタンスをxml化できるようにする必要があります。親でtoXmlメソッドを作成しますか?MyDomainXmlUtility.toXmlヘルパークラスを作成しますか?これは、ビジネスニーズがドメインモデル全体に​​またがる場合です-インスタンスメソッドとして本当に属していますか?アプリケーションのxml機能に多数の補助メソッドがある場合はどうでしょうか?

9
nodejsのシングルトンパターン-必要ですか?
私は最近、Node.jsでシングルトンを作成する方法についてこの記事を見つけました。私はrequire 次のような州の文書を知っています: モジュールは、最初にロードされた後にキャッシュされます。への複数の呼び出しrequire('foo')により、モジュールコードが複数回実行されない場合があります。 したがって、必要なすべてのモジュールは、シングルトンボイラープレートコードなしでシングルトンとして簡単に使用できるようです。 質問: 上記の記事は、シングルトンを作成するためのラウンドアラウンドソリューションを提供していますか?


9
リポジトリパターンを使用せず、ORMをそのまま使用する(EF)
私は常にリポジトリパターンを使用していましたが、最新のプロジェクトでは、それの使用と「作業単位」の実装を完璧にできるかどうかを確認したいと思いました。掘り始めると、「本当に必要なのか」という疑問を持ち始めました。 これはすべて、Stackoverflowに関するいくつかのコメントから始まります。AyendeRahienのブログへの投稿への痕跡が2つあります。 リポジトリは新しいシングルトンです ask-ayende-life-without-repositories-the-they-worth-living これはおそらくいつまでも話される可能性があり、アプリケーションによって異なります。私が知りたいのは、 このアプローチはEntity Frameworkプロジェクトに適していますか? このアプローチを使用して、ビジネスロジックはまだサービスレイヤー、または拡張メソッドにありますか(以下で説明するように、拡張メソッドはNHibセッションを使用しています)。 これは、拡張メソッドを使用して簡単に実行できます。クリーンでシンプルで再利用可能。 public static IEnumerable GetAll( this ISession instance, Expression<Func<T, bool>> where) where T : class { return instance.QueryOver().Where(where).List(); } このアプローチをNinjectDIとして使用してContext、インターフェイスを作成し、それをコントローラーに挿入する必要がありますか?

17
戦略パターンの実例
OCPプリンシパルと、これを達成するための戦略パターンの使用方法について読んでいます。 私はこれを数人に説明しようと試みましたが、考えられる唯一の例は、「注文」のステータスに基づいて異なる検証クラスを使用することです。 私はいくつかの記事をオンラインで読みましたが、これらは通常、レポート/請求書/検証などの戦略を使用する本当のような理由を説明していません... 戦略パターンが一般的であると考える実例はありますか?

8
ボードゲームをモデリングするためのパターンはありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 この質問を改善する 楽しみのために、私は息子のお気に入りのボードゲームの1つをソフトウェアとして記述しようとしています。最終的にはその上にWPF UIを構築することを期待していますが、今はゲームとそのルールをモデル化するマシンを構築しています。 私がこれをしている間、私は多くのボードゲームに共通していると私が思う問題を常に見ています。 (ゲームをプレイするためのAIと、高パフォーマンスに関するパターンは、私には興味がないことに注意してください。) これまでのところ私のパターンは: ゲームボックス内のエンティティを表すいくつかの不変のタイプ。たとえば、サイコロ、チェッカー、カード、ボード、ボード上のスペース、お金など。 各プレーヤーのオブジェクト。プレーヤーのリソース(お金、スコアなど)、名前などが含まれます。 ゲームの状態を表すオブジェクト:プレイヤー、ターンの方向、ボード上のピースのレイアウトなど。 ターンシーケンスを管理するステートマシン。たとえば、多くのゲームには小さなプレゲームがあり、各プレーヤーがロールして誰が先に行くかを確認します。それが開始状態です。プレーヤーのターンが始まると、最初に転がり、次に移動し、その場で踊らなければなりません。次に他のプレーヤーが自分の鶏の種類を推測し、ポイントを受け取ります。 私が利用できる先行技術はありますか? 編集:私が最近気付いたことの1つは、ゲームの状態を2つのカテゴリに分割できることです。 ゲームのアーティファクトの状態。「10ドル持っている」または「左手が青くなっている」。 ゲームシーケンス状態。「私はダブルスを2回​​振りました。次の1つは私を刑務所に入れます」。ここでは、状態マシンが意味をなす場合があります。 編集:私がここで本当に探しているのは、チェス、スクラブル、モノポリーなどのマルチプレイヤーターンベースゲームを実装するための最良の方法です。このようなゲームは、最初から最後まで作業するだけで作成できると確信していますが、他のデザインパターンと同様に、物事をよりスムーズに進めるための方法がいくつかあります。それが私が望んでいることです。

17
C#のファクトリパターン:オブジェクトインスタンスがファクトリクラスによってのみ作成されることを確実にする方法は?
最近、自分のコードの一部を保護することを考えています。オブジェクトが直接作成されないようにするにはどうすればよいのか興味がありますが、ファクトリクラスのメソッドを介してのみ作成できます。「ビジネスオブジェクト」クラスがあり、このクラスのインスタンスが有効な内部状態になるようにしたいとします。これを実現するには、オブジェクトを作成する前に、おそらくそのコンストラクタで、いくつかのチェックを実行する必要があります。このチェックをビジネスロジックの一部にすることを決定するまで、これで問題ありません。それでは、ビジネスロジッククラスのいくつかのメソッドを介してのみ、直接ではなく、ビジネスオブジェクトを作成できるようにするにはどうすればよいでしょうか。C ++の古き良き「フレンド」キーワードを使用する最初の自然な欲求は、C#では不十分です。他のオプションが必要です... いくつかの例を試してみましょう: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public MyBusinessObjectClass CreateBusinessObject (string myProperty) { // Perform some check on myProperty if (true /* check is okay */) return new MyBusinessObjectClass (myProperty); …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.