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

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

25
デザインパターンの学習/実装(初心者向け)[終了]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善して再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 私はこれを理解しようとしている混乱した初心者で愛好家のプログラマーなので、私の質問が少しずれていたり、あまり意味がない場合は許してください。 デザインパターンの使用を中心にSOに関する質問がたくさんありますが、デザインパターンについて学び、実装するための優れたリソースを誰かが持っているのではないかと思います。私は一般的な考え方を理解しており、それらのいくつか(シングルトン、ファクトリメソッド)をいつどのように使用するかを知っていますが、私は見逃していることを知っています。 (念のため、私の好みの言語はC#ですが、他の言語の例から学ぶこともできます)

22
静的クラスの代わりにシングルトンパターンを使用する必要があるのはいつですか?[閉まっている]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前に閉鎖されました。 この質問を改善する シングルトンクラスと静的クラスのどちらを使用するかを決定する際の設計上の考慮事項に名前を付けます。これを行う際に、あなたは2つを対比することを余儀なくされるので、あなたが思いつくことができるどんな対比もあなたの思考プロセスを示すのに役立ちます!また、すべてのインタビュアーは実例を見るのが好きです。:)

14
ドメインエンティティをプレゼンテーション層から分離する必要があるのはなぜですか?
ドメイン駆動設計の一部で、詳細があまり詳しくないようですが、ドメインモデルをインターフェイスから分離する方法と理由です。これは良い習慣だと同僚に納得させようとしていますが、あまり進んでいないようです... プレゼンテーションレイヤーとインターフェイスレイヤーで、好きな場所でドメインエンティティを使用します。ドメインレイヤーをインターフェイスレイヤーから分離するために表示モデルまたはDTOを使用する必要があると私が主張するとき、彼らは、維持するUIオブジェクトがあるため、そのようなことを行うことでビジネス価値が見られないと反論します。元のドメインオブジェクトと同様に。 だから私はこれをバックアップするために使用できるいくつかの具体的な理由を探しています。具体的には: プレゼンテーション層でドメインオブジェクトを使用しないのはなぜですか? (答えが明白なものである場合、「デカップリング」、それからこれがこの文脈で重要である理由を説明してください) ドメインオブジェクトをインターフェイスから分離するために、追加のオブジェクトまたは構成を使用する必要がありますか?

3
アチーブメントシステムをコーディングするための最良の方法
自分のサイトで使用するアチーブメントシステムを設計するための最良の方法を考えています。データベース構造は、3つ以上の連続したレコードが欠落していることを伝えるための最良の方法で見つけることができます。このスレッドは、実際には開発者からアイデアを得るための拡張機能です。 このウェブサイトでバッジ/達成システムについて多くの話をしているときに私が抱えている問題は、それだけです-それはすべて話であり、コードはありません。実際のコード実装例はどこにありますか? ここで、人々が貢献してくれることを願っているデザインを提案し、拡張可能なアチーブメントシステムをコーディングするための優れたデザインを作成できることを願っています。これが最善だと言っているわけではありませんが、それは可能性のあるスターティングブロックです。 お気軽にご意見をお寄せください。 私のシステム設計のアイデア 一般的なコンセンサスは、「イベントベースのシステム」を作成することであるようです。投稿の作成、削除などの既知のイベントが発生するたびに、そのようにイベントクラスが呼び出されます。 $event->trigger('POST_CREATED', array('id' => 8)); 次に、イベントクラスは、このイベントを「リッスン」しているバッジを見つけ、次にrequiresそのファイルを見つけて、次のようにそのクラスのインスタンスを作成します。 require '/badges/' . $file; $badge = new $class; 次に、呼び出されたときtriggerに受信したデータを渡すデフォルトのイベントを呼び出します。 $badge->default_event($data); バッジ ここで本当の魔法が起こります。各バッジには、バッジを授与するかどうかを決定するための独自のクエリ/ロジックがあります。各バッジは、たとえば次の形式で設定されます。 class Badge_Name extends Badge { const _BADGE_500 = 'POST_500'; const _BADGE_300 = 'POST_300'; const _BADGE_100 = 'POST_100'; function get_user_post_count() { $escaped_user_id = mysql_real_escape_string($this->user_id); $r = mysql_query("SELECT COUNT(*) …

6
クライアント/サーバーデータベースの同期
中央サーバー上のデータを、常にオンラインであるとは限らないクライアントアプリケーションと同期するためのいくつかの一般的な戦略を探しています。 私の特定のケースでは、sqliteデータベースを備えたAndroid電話アプリケーションとMySQLデータベースを備えたPHPWebアプリケーションがあります。 ユーザーは、電話アプリケーションとWebアプリケーションで情報を追加および編集できるようになります。電話がサーバーとすぐに通信できない場合でも、1か所で行った変更がすべての場所に反映されるようにする必要があります。 電話からサーバーに、またはその逆にデータを転送する方法には関心がありません。たとえば、MySQLで利用可能なレプリケーション機能を使用できないという理由だけで、特定のテクノロジについて言及しています。 クライアント/サーバーデータの同期の問題が長い間発生していることを知っています。問題を処理するためのパターンに関する情報(記事、書籍、アドバイスなど)が必要です。同期を処理して長所、短所、およびトレードオフを比較するための一般的な戦略について知りたいのですが。

15
adapter-アダプタパターンの実際の例[クローズ]
閉まっている。この質問は、StackOverflowのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、StackOverflowのトピックになります。 14日前に閉店しました。 この質問を改善する 私のチームにアダプタパターンの使用法を示したいと思います。私はオンラインでたくさんの本や記事を読みました。誰もが概念を理解するのに役立つ例(形状、メモリーカード、電子アダプターなど)を引用していますが、実際のケーススタディはありません。 アダプタパターンのケーススタディを教えてください。 ps stackoverflowで既存の質問を検索しようとしましたが、答えが見つからなかったため、新しい質問として投稿しました。これに対する答えがすでにあることがわかっている場合は、リダイレクトしてください。

7
Cに「デザインパターン」はありますか?[閉まっている]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 デザインパターンは一般的にオブジェクト指向プログラミングに関連するものであることを私は知っていますが、Cをプログラミングするときによく使用するパターンはありますか? 私は古典的なOOパターンの単純な翻訳には興味がなく、Duffのデバイスについては言及しないでください。;-)

10
元に戻す/やり直しの実装
テキストエディタのように、元に戻す/やり直し機能を実装する方法について考えてみてください。どのアルゴリズムを使用する必要があり、何を読むことができますか。ありがとう。

8
ファサードvs.メディエーター
私はこれら2つのパターンの違いを研究してきました。 ファサードはサブシステムへのアクセスをカプセル化し、メディエーターはコンポーネント間の相互作用をカプセル化することを理解しています。 サブシステムコンポーネントはファサードを認識していませんが、コンポーネントは明らかにメディエーターを認識していることを理解しています。 現在、App.Config、SQLに格納されているユーザー設定、アセンブリ情報などの構成情報を取得する方法をカプセル化するためのファサードと、異なるWindowsフォーム間のナビゲーション用のメディエーターを使用しています。 ただし、ほとんどのサイトは、メディエーターが「機能を追加する」と指摘しています。これはどういう意味ですか?メディエーターはどのように機能を追加しますか?



11
IntelliJでのビルダーパターンコードの生成
IntelliJでBuilderパターンの記述を自動化する方法はありますか? たとえば、次の単純なクラスがあるとします。 class Film { private String title; private int length; public void setTitle(String title) { this.title = title; } public String getTitle() { return this.title; } public void setLength(int length) { this.length = length; } public int getLength() { return this.length; } } IDEにこれまたは同様のものを生成させる方法はありますか? public class FilmBuilder { Film …

4
構成設定の問題に適用できるデザインパターンはどれですか?
大規模で複雑なソフトウェア製品では、構成可能な設定を管理することが大きな問題になります。この問題に対して私が見た2つのアプローチは次のとおりです。 システム内の各コンポーネントに、構成ファイルまたはレジストリ設定から独自の構成をロードさせます。 構成可能なすべてのシステム設定をロードする設定ローダークラスがあり、各コンポーネントに設定ローダーに設定を照会させます。 これらのアプローチはどちらも私には間違っていると感じています。 問題を単純化するために使用できるデザインパターンはありますか?依存性注入手法を利用するものかもしれません。

11
DTOをドメインオブジェクトにマッピングするためのベストプラクティス?
DTOをドメインオブジェクトにマッピングすることに関連する質問をたくさん見ましたが、彼らが私の質問に答えているとは感じませんでした。私はこれまで多くの方法を使って自分の意見を持っていますが、もう少し具体的なものを探しています。 状況: 多くのドメインオブジェクトがあります。CSLAモデルを使用しているため、ドメインオブジェクトは非常に複雑になり、独自のデータアクセスが含まれます。あなたはこれらをワイヤーで回したくありません。さまざまな形式(.Net、JSONなど)でデータを返すいくつかの新しいサービスを作成する予定です。このため(およびその他の理由)、ネットワーク上を通過する無駄のないデータ転送オブジェクトも作成しています。 私の質問は、DTOとドメインオブジェクトをどのように接続する必要があるかということです。 私の最初の反応は、FowlerのDTOパターンタイプのソリューションを使用することです。私はこれが何度も行われているのを見てきましたが、それは私にとって正しいと感じています。ドメインオブジェクトには、DTOへの参照が含まれていません。ドメインオブジェクトからDTOを作成するために、外部エンティティ(「マッパー」または「アセンブラー」)が呼び出されます。通常、ドメインオブジェクト側にORMがあります。これの欠点は、「マッパー」が実際の状況では非常に複雑になる傾向があり、非常に壊れやすいことです。 別のアイデアは、ドメインオブジェクトが単なる無駄のないデータオブジェクトであるため、DTOを「含む」ことです。ドメインオブジェクトプロパティは内部でDTOプロパティを参照し、要求された場合はDTOを返すことができます。これには問題はありませんが、気分が悪いです。NHibernateを使用している人々がこの方法を使用しているように見える記事をいくつか見ました。 他の方法はありますか?上記の方法の1つは使用する価値がありますか?もしそうなら、そうでなければ、なぜですか?

8
Virgil DobjanschiREST実装パターンを実装するサンプルAndroidRESTクライアントプロジェクトが必要
AndroidフォンでRESTクライアントを構築したい。 RESTサーバーは、いくつかのリソースを公開します。例:(GET) http://foo.bar/customer List of all customer http://foo.bar/customer/4711 The customer with id 4711 http://foo.bar/customer/vip List of all VIP customer http://foo.bar/company List of all companys http://foo.bar/company/4711 The company with the ID 4711 http://foo.bar/company/vip List of all VIP companys 私はRESTサーバーと通信して必要な情報を取得する方法を知っていると思います。このようなAPIでRESTクライアントクラスを実装します public List<Customer> getCustomers(); public Customer getCustomer(final String id); public List<Customer> getVipCustomer(); public …

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