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

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

28
依存性注入とファクトリパターン
Dependency Injectionの使用法として引用されている例のほとんどは、ファクトリーパターンを使用して解決することもできます。依存関係の注入とファクトリーの違いは、使用法/設計に関してはぼやけている、または薄いようです。 誰かが私にあなたがそれをどのように使うかが違いをもたらすと私に言ったら! 私はかつて、StructureMapのDIコンテナを使用して問題を解決しました。その後、シンプルなファクトリで機能するように再設計し、StructureMapへの参照を削除しました。 それらの違いと何をどこで使用するのか、ここでのベストプラクティスは何ですか?

21
AndroidのMVCパターン
AndroidのJavaでモデル、ビュー、コントローラーのパターンを実装することは可能ですか? それとも、アクティビティによってすでに実装されていますか?または、AndroidにMVCパターンを実装するより良い方法はありますか?

10
「暗黙的にアンラップされたオプション」を作成する理由は、値があることがわかっているからです。
通常の変数または定数だけを作成するのではなく、「暗黙的にアンラップされたオプション」を作成するのはなぜですか?正常にアンラップできることがわかっている場合は、なぜ最初にオプションを作成するのですか?たとえば、これはなぜですか: let someString: String! = "this is the string" より便利になるでしょう: let someString: String = "this is the string" 「オプションが定数または変数が「値なし」を許可されていることを示す」場合でも、「プログラムの構造から、オプションがその値が最初に設定された後は常に値を持つことが明らかである場合があります」、のポイントは何ですかそもそもそれをオプションにしていますか?オプションが常に値を持つことを知っているなら、それはオプションではないのではないですか?

10
ViewPagerとフラグメント—フラグメントの状態を保存する正しい方法は何ですか?
フラグメントは、UIロジックをいくつかのモジュールに分離するのに非常に適しているようです。しかし、ViewPagerそのライフサイクルとともに、私にはまだ霧がかかっています。だからグルの考えはひどく必要です! 編集する 以下のばかげた解決策を参照してください;-) 範囲 メインアクティビティにはViewPagerフラグメントがあります。これらのフラグメントは、他の(サブメイン)アクティビティに対して少し異なるロジックを実装できるため、フラグメントのデータはアクティビティ内のコールバックインターフェイスを介して入力されます。そして、すべては最初の起動で正常に動作しますが、!... 問題 アクティビティが再作成されたとき(たとえば、方向が変更されたとき)ViewPagerのフラグメントを作成します。コード(以下にあります)は、アクティビティが作成されるたびに、ViewPagerフラグメントと同じ新しいフラグメントアダプターを作成しようとする(多分これが問題である)と述べていますが、FragmentManagerはすでにこれらのフラグメントをどこかに(どこに?)格納しています。それらのレクリエーションメカニズムを開始します。したがって、レクリエーションメカニズムは、アクティビティの実装されたメソッドを介してデータを開始するためのコールバックインターフェース呼び出しで「古い」フラグメントのonAttach、onCreateViewなどを呼び出します。ただし、このメソッドは、アクティビティのonCreateメソッドで作成された、新しく作成されたフラグメントを指します。 問題 多分私は間違ったパターンを使用していますが、Android 3 Proの本でさえそれについてあまり詳しくありません。だから、してください、私に一から二パンチを与え、それを正しい方法を行う方法を指摘しています。どうもありがとう! コード 主な活動 public class DashboardActivity extends BasePagerActivity implements OnMessageListActionListener { private MessagesFragment mMessagesFragment; @Override protected void onCreate(Bundle savedInstanceState) { Logger.d("Dash onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.viewpager_container); new DefaultToolbar(this); // create fragments to use mMessagesFragment = new MessagesFragment(); mStreamsFragment = new StreamsFragment(); // …

19
FactoryとAbstract Factoryのデザインパターンの基本的な違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 ファクトリパターンと抽象ファクトリパターンの基本的な違いは何ですか?

16
抽象ファクトリーとファクトリーデザインパターンの違いは何ですか?
これら2つのパターンの違いについては多くの投稿があることは知っていますが、見つけられないことがいくつかあります。 私が読んでいることから、ファクトリメソッドパターンを使用すると、単一の具体的な製品を作成する方法を定義できますが、一般的な製品を表示するため、クライアントから実装を隠すことができます。私の最初の質問は、抽象ファクトリーについてです。その役割は、単一のコンクリートオブジェクトだけでなく、使用する具体的なファクトリに依存するコンクリートオブジェクトのファミリを作成できるようにすることですか?抽象ファクトリーは、呼び出すメソッドに応じて、非常に大きなオブジェクトを1つだけ返すのか、それとも多くのオブジェクトを返すのですか? 私の最後の2つの質問は、私が多くの場所で見たことを完全には理解できない単一の引用に関するものです。 2つの違いの1つは、抽象ファクトリパターンでは、クラスがオブジェクトのインスタンス化の責任を合成によって別のオブジェクトに委譲するのに対し、ファクトリメソッドパターンは継承を使用し、サブクラスに依存して目的のオブジェクトのインスタンス化を処理することです。 私の理解では、ファクトリー・メソッド・パターンにはCreatorインターフェースがあり、これにより、具象化するConcreteProductを、ConcreteCreatorが管理できるようになります。これは、継承を使用してオブジェクトのインスタンス化を処理することの意味ですか? さて、その引用に関して、抽象ファクトリパターンは、オブジェクトのインスタンス化の責任を、合成を介して別のオブジェクトにどのように委任するのでしょうか。これは何を意味するのでしょうか?抽象ファクトリパターンも、継承を使用して構築プロセスを実行しているように見えますが、やはりこれらのパターンについてはまだ学習しています。 特に最後の質問で何か助けていただければ幸いです。


10
集計ルートとは何ですか?
リポジトリパターンを適切に使用する方法を理解しようとしています。アグリゲートルートの中心的な概念が次々と登場します。WebとStack Overflowの両方で集約ルートのヘルプを検索すると、それらについての議論と、ベース定義が含まれているはずのページへのデッドリンクが見つかります。 リポジトリパターンのコンテキストでは、集約ルートとは何ですか?

13
プロキシ、デコレータ、アダプタ、およびブリッジのパターンはどのように違いますか?
私はプロキシパターンを見ていましたが、私には、デコレータ、アダプタ、およびブリッジパターンのようにひどいように見えます。私は何かを誤解していますか?違いは何ですか?なぜ他のものに対してプロキシパターンを使用するのですか?過去に実際のプロジェクトでそれらをどのように使用しましたか?

10
シングルトン対Androidのアプリケーションコンテキスト?
シングルトンの使用に関するいくつかの問題を列挙 し、シングルトンパターンを使用するAndroidアプリケーションのいくつかの例を見たことがあるこの投稿を思い出して、グローバルアプリケーション状態(android.os.Applicationのサブクラス化と取得)を通じて共有される単一のインスタンスの代わりにシングルトンを使用するのは良い考えでしょうcontext.getApplication()を通じて)。 両方のメカニズムにはどのような利点/欠点がありますか? 正直なところ、この投稿のWebアプリケーションでのシングルトンパターンで同じ答えが得られることを期待しています。Androidに適用されます。私は正しいですか?それ以外のDalvikVMの違いは何ですか? 編集:私はいくつかの側面に関与することについて意見を述べたいです: 同期 再利用性 テスト中

5
デザインパターンWebベースアプリケーション[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 シンプルなWebベースのアプリケーションを設計しています。私はこのWebベースのドメインに不慣れです。サーブレット間で責任をどのように分散すべきか、新しいサーブレットを作成するための基準などの設計パターンについて、あなたのアドバイスが必要でした。 実際、私は自分のホームページにいくつかのエンティティがあり、それらのそれぞれに対応して、追加、編集、削除などのいくつかのオプションがあります。以前は、add entity1のServlet1、編集entity1のServlet2などのオプションごとに1つのサーブレットを使用していたため、このようにして多数のサーブレットが作成されていました。 今、私たちはデザインを変えています。私の質問は、サーブレットの責任をどのように選択するかを正確に選択する方法です。すべてのオプションを処理し、リクエストをサービス層に転送するエンティティごとに1つのサーブレットが必要です。または、ページ全体のリクエストを処理し、それを対応するサービス層に転送する1つのサーブレットをページ全体に割り当てる必要がありますか?また、リクエストオブジェクトがサービスレイヤーに転送されるかどうか。

22
デザインパターンを研究するには?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 6年前休業。 この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 デザインパターンについて4〜5冊の本を読みましたが、それでもデザインパターンの中間レベルに近づいたように感じませんか。 デザインパターンを勉強するにはどうすればいいですか? デザインパターンの良い本はありますか? 私はこれが経験だけ​​で来ることを知っていますが、これらを習得する方法があるに違いありませんか?

19
依存性注入を使用することの欠点は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 私が知りたいのですが、ここでの仕事と私たちのリード開発者の一人で、パターンとしてDIを導入しようとしている:どのような-もしあれば-あるマイナス面依存性の注入パターンを使用するには? ここでは、トピックに関する主観的な議論ではなく、可能な限り完全なリストを探していることに注意してください。 明確化:私は依存性注入パターン(Martin Fowlerによるこの記事を参照)について話しているのですが、特定のフレームワークではなく、XMLベース(Springなど)でもコードベース(Guiceなど)でも、「自己ロール」 。 編集:ここで/ r / programmingを進行中のいくつかの素晴らしいディスカッション/怒り/討論。

26
Objective-Cシングルトンはどのように見えるべきですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私のシングルトンアクセサーメソッドは通常、以下のバリアントです。 static MyClass *gInstance = NULL; + (MyClass *)instance { @synchronized(self) { if (gInstance == NULL) gInstance = [[self alloc] init]; } return(gInstance); } これを改善するために私は何ができますか?

10
C ++でファクトリメソッドパターンを正しく実装する方法
簡単に聞こえますが、正直に言うとどうすればいいのかわからないので、C ++には長い間不快に感じていたものが1つあります。 C ++でFactoryメソッドを正しく実装するにはどうすればよいですか? 目標:許容できない結果やパフォーマンスへの影響なしに、クライアントがオブジェクトのコンストラクタの代わりにファクトリメソッドを使用してオブジェクトをインスタンス化できるようにすること。 「ファクトリー・メソッド・パターン」とは、オブジェクト内の静的なファクトリー・メソッドまたは別のクラスで定義されたメソッド、またはグローバル関数の両方を意味します。一般的には、「クラスXのインスタンス化の通常の方法をコンストラクター以外の場所にリダイレクトするという概念」です。 私が考えたいくつかの可能な答えをざっと見てみましょう。 0)工場を作らず、コンストラクタを作る。 これは良さそうですが(実際、多くの場合は最善の解決策です)、一般的な解決策ではありません。まず、オブジェクトの構築が別のクラスへの抽出を正当化するのに十分複雑なタスクである場合があります。しかし、その事実はさておき、コンストラクターだけを使用する単純なオブジェクトの場合でさえ、多くの場合そうしません。 私が知っている最も簡単な例は、2-D Vectorクラスです。とてもシンプルですが、トリッキーです。デカルト座標と極座標の両方から構築できるようにしたいと考えています。明らかに、私はできません: struct Vec2 { Vec2(float x, float y); Vec2(float angle, float magnitude); // not a valid overload! // ... }; 私の自然な考え方は次のとおりです。 struct Vec2 { static Vec2 fromLinear(float x, float y); static Vec2 fromPolar(float angle, float magnitude); // ... }; これは、コンストラクターの代わりに、静的ファクトリーメソッドの使用につながります...これは、本質的に、何らかの方法でファクトリーパターンを実装していることを意味します(「クラスが独自のファクトリーになる」)。これは見栄えがよく(この特定のケースに適しています)、場合によっては失敗します。これについては、ポイント2で説明します。 …

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