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

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

2
Facade、Proxy、Adapter、Decoratorのデザインパターンの違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 この質問を改善する Facade、Proxy、Adapter、Decoratorのデザインパターンの違いは何ですか? 私は明確な説明を読んだことがありません、あなたは何ですか?

7
オブジェクト指向の分析と設計を使用したエレベーターのモデリング[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 この質問を改善する オブジェクト指向の設計と分析に関しては、インタビューやクラスで一般的に使用されているように見える一連の質問があります。これはそのうちの1つです。残念ながら、大学の私のOOP教授は実際には答えを出していないので、私は不思議に思っていました。 問題は次のとおりです。エレベーターバンクのシミュレーションに使用するオブジェクト/メソッドの基本セットを設計します。オブジェクトとその属性/メソッドは何ですか? 議論のために、私たちの建物が20階建てであると仮定しましょう。最下階はロビー、2階は駐車場につながっています(したがって、人々は最下階または2階のどちらかの建物に出入りします)。すべてのフロアにサービスを提供するエレベーターバンクが1つあります。エレベーターバンクには3つのエレベーターシャフトがあり、シャフトごとに1つのエレベーターがあります。 これをオブジェクト指向モデルでモデル化する正しい方法は何でしょうか?

10
Javaのマーカーインターフェイス?
JavaのMarkerインターフェイスは空のインターフェイスであり、このインターフェイスを実装するクラスのオブジェクトをシリアル化、クローニングなどの特別な方法で処理する必要があることをコンパイラまたはJVMに通知するために使用されることを教えられていました しかし、最近、実際にはコンパイラやJVMとは何の関係もないことを知りました。たとえば、Serializableインターフェースの場合、のメソッドwriteObject(Object)は、クラスが適切に実装およびスローするかどうかを検出するObjectOutputStreamようなものです。すべてがコードで処理され、これはデザインパターンのように見えるので、独自のマーカーインターフェイスを定義できると思います。instanceOf SerializableSerializableNotSerializableException 今私の疑問: 第一点で上記のマーカーインターフェースの定義は間違っていますか?では、マーカーインターフェイスをどのように定義できますか? そして、instanceOf演算子を使用する代わりに、なぜメソッドをwriteObject(Serializable)実行時ではなくコンパイル時の型チェックがあるようにすることができないのでしょうか? 注釈はマーカーインターフェイスよりも優れていますか?

10
Java Builderクラスのサブクラス化
与えるこの博士ドブスの記事、特にBuilderパターンを、どのように我々はビルダをサブクラス化のケースを扱うのですか?GMOラベルを追加するためにサブクラス化する例の簡略版を取り上げると、単純な実装は次のようになります。 public class NutritionFacts { private final int calories; public static class Builder { private int calories = 0; public Builder() {} public Builder calories(int val) { calories = val; return this; } public NutritionFacts build() { return new NutritionFacts(this); } } protected NutritionFacts(Builder builder) { calories = builder.calories; } …



14
なぜ抽象ファクトリデザインパターンが必要なのですか?
定義のほとんどは言う: 抽象ファクトリーは、具体的なクラスを指定せずに関連オブジェクトのファミリーを作成するためのインターフェースを提供します 具象クラス自体のオブジェクトを作成することでタスクを達成できるため、抽象ファクトリパターンの使用方法は何ですか。Concreteクラスのオブジェクトを作成するファクトリメソッドがあるのはなぜですか? abstractFactoryパターンを実装する必要がある実際の例を教えてください。


7
戦略パターンとコマンドパターンの使用
どちらのデザインパターンもアルゴリズムをカプセル化し、実装の詳細を呼び出し元のクラスから切り離します。私が識別できる唯一の違いは、ストラテジーパターンが実行用のパラメーターを取り込むのに対し、コマンドパターンは受け取らないことです。 コマンドパターンは、作成時に実行のためにすべての情報が利用可能である必要があり、その呼び出しを(おそらくスクリプトの一部として)遅らせることができるようです。 1つのパターンと他のパターンのどちらを使用するかは、どの決定によって決まりますか?

4
横断的関心事の例
の良い例は何cross-cutting concernですか?ウィキペディアのページにあるカルテの例は私には不完全なようです。 具体的には、この例から、ロギングによってコードの重複(分散)が発生するのはなぜですか?(log("....")どこにでもあるような単純な呼び出しに加えて、大したことのようには見えません)。 a core concernとa はどう違いcross-cutting concernますか? 私の最終目標は、AOPをよりよく理解することです。

5
設計パターンと建築パターンの違いは何ですか?
インターネットでデザインパターンについて読むとき、3つのカテゴリがあることに注意してください。 創造的 構造的 ふるまい しかし、ソフトウェアのアーキテクチャを作成するときは、MVP、MVC、またはMVVMについて考えます。 たとえば、作成パターンの中からシングルトンパターンを見つけましたが、MPVでもシングルトンを使用しました。 だから私の質問は:デザインパターンは製品の全体的な構造ですか? はいの場合、シングルトンはどのように設計パターンになりますか?アプリケーションのどこでも使用できるからです。基本的に、メモリ内に一度に1つのインスタンスを作成することだけに制限されていますが、この概念はソフトウェアの設計方法を定義していませんか? そうでない場合は、MVP、MVC、MVVMの3つのパターンカテゴリはどこにあるのでしょうか。そして、ソフトウェアの設計とアーキテクチャの違いは何ですか?

19
典型的なステートマシン実装パターンはありますか?
Cで単純な状態マシンを実装する必要があります。 標準のswitchステートメントは最善の方法ですか? 現在の状態(state)と遷移のトリガーがあります。 switch(state) { case STATE_1: state = DoState1(transition); break; case STATE_2: state = DoState2(transition); break; } ... DoState2(int transition) { // Do State Work ... if(transition == FROM_STATE_2) { // New state when doing STATE 2 -> STATE 2 } if(transition == FROM_STATE_1) { // New State when …

22
元に戻すエンジンのデザインパターン
土木工学アプリケーション用の構造モデリングツールを書いています。建物全体を表す1つの巨大なモデルクラスがあります。これには、カスタムクラスでもあるノード、線要素、荷重などのコレクションが含まれます。 モデルを変更するたびにディープコピーを保存する元に戻すエンジンをすでにコーディングしています。さて、私は別の方法でコーディングできるかどうか考え始めました。ディープコピーを保存する代わりに、各モディファイアアクションのリストを、対応するリバースモディファイヤとともに保存することもできます。現在のモデルにリバースモディファイヤを適用して元に戻したり、モディファイヤをやり直したりできるようにしました。 オブジェクトのプロパティなどを変更する単純なコマンドをどのように実行するか想像できますが、複雑なコマンドはどうでしょうか。新しいノードオブジェクトをモデルに挿入し、新しいノードへの参照を維持するいくつかの線オブジェクトを追加するようなものです。 それを実装するにはどうすればよいですか?

4
forループ内のifステートメントを回避しますか?
私は次のようなWriter機能を持つ呼び出されたクラスを持っていますwriteVector: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } パフォーマンスを心配しながら、コードを重複させないようにしています。関数では、私のif (index)すべてのラウンドでチェックを行っていますforは、結果は常に同じですループのます。これは「パフォーマンスの心配」に反します。 for-ループの外側にチェックを配置することで、これを簡単に回避できました。ただし、重複したコードが大量に取得されます。 void Drawer::writeVector(...) { if (index) { for (...) { cout << i << …

23
一度しか呼び出せないJavaScriptの関数
一度だけ実行できる関数を作成する必要があります。最初の関数が実行された後、毎回実行されません。作業を行うことができる静的変数についてC ++とJavaから知っていますが、これを行うよりエレガントな方法があるかどうか知りたいのですが?

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