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

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


24
MVPとMVCとは何ですか?違いは何ですか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供してください。これには、引用や、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 ユーザーインターフェイスを構築するRAD(ドラッグアンドドロップおよび構成)の方法を超えて検討すると、多くのツールは、Model-View-Controller、Model-View-Presenter、およびModel-View-ViewModelと呼ばれる3つの設計パターンに出くわす可能性が高いと考えています。私の質問には3つの部分があります。 これらのパターンはどのような問題に対処しますか? それらはどのように似ていますか? それらはどう違いますか?

30
シングルトンの何が悪いのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 シングルトンパターンはの完全払込メンバーであるのGoFのパターンの本が、それは最近、むしろ開発者の世界で孤立したようです。私はまだ特に多くのシングルトンを使用しています。特にファクトリークラスでは、マルチスレッドの問題(実際には他のクラスと同様)に少し注意する必要がありますが、なぜそれほどひどいのかはわかりません。 スタックオーバーフローは特に、シングルトンが悪であることに誰もが同意していると想定しているようです。どうして? 「事実、参考文献、または特定の専門知識」で回答をサポートしてください



25
MVCとMVVMの違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6か月前に閉鎖。 標準の「Model View Controller」パターンとMicrosoftのModel / View / ViewModelパターンに違いはありますか?

13
クラスの命名-すべてを「<WhatEver> Manager」と呼ばないようにする方法 [閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ずっと前に私は記事を読んだことがあります(私はブログエントリだと思います)。これは、オブジェクトの名前付けに関する「正しい」トラックに私を導きました。 たとえば、私のアプリケーションが(典型的なビジネスアプリとして)ユーザー、会社、アドレスを処理している場合、a User、a、CompanyおよびAddressドメインクラスがあり、おそらくこれらの処理を行うa UserManager、a、CompanyManagerおよびanのAddressManagerポップアップが表示されます。 だからあなたは何それらを伝えることができるUserManager、CompanyManagerとAddressManagerのですか?いいえ。Managerは、ドメインオブジェクトで実行できるすべてのものに当てはまる非常に一般的な用語であるためです。 私が読んだ記事では、非常に具体的な名前を使用することをお勧めしました。それがC ++アプリケーションであり、UserManagerの仕事がユーザーの割り当てとヒープからの解放であった場合、ユーザーを管理するのではなく、その誕生と死を守ります。うーん、多分これをと呼ぶことができますUserShepherd。 または、UserManagerの仕事は、各Userオブジェクトのデータを調べて、データに暗号で署名することです。次に、UserRecordsClerk。 この考えが私にくっついたので、私はそれを適用しようとします。そして、このシンプルなアイデアを驚くほど難しいものにしてください。 私はクラスが何をするかを説明することができます(そして私が迅速で汚いコーディングに陥らない限り)私が書くクラスは正確に1つのことを行います。その説明から名前に行くのに欠けているのは、一種の名前のカタログであり、概念を名前にマッピングする語彙です。 最終的には、パターンカタログのようなものを念頭に置きたいと思います(多くの場合、設計パターンは、ファクトリーなどのオブジェクト名を簡単に提供します)。 ファクトリー-他のオブジェクトを作成します(設計パターンから取得した名前) 羊飼い-羊飼いはオブジェクトの寿命、オブジェクトの作成とシャットダウンを処理します Synchronizer-2つ以上のオブジェクト(またはオブジェクト階層)間でデータをコピーします ナニー-オブジェクトが作成後に「使用可能な」状態に達するのを支援します-他のオブジェクトへの配線などにより などなど それで、あなたはその問題をどのように扱いますか?あなたは固定された語彙を持っていますか、あなたはその場で新しい名前を発明しますか、それともそれほど重要ではないか間違っているものに名前を付けることを考えますか? PS:この問題について議論している記事やブログへのリンクにも興味があります。初めに、私がそれについて考えさせた元の記事は次のとおりです:「マネージャー」なしのJavaクラスの命名 更新:回答の要約 その間、私がこの質問から学んだことの簡単な要約を以下に示します。 新しい隠喩を作成しないようにしてください(乳母) 他のフレームワークが何をするか見てください このトピックに関する他の記事/本: 定期的にクラスの先頭に追加/追加している名前は何ですか? クラスに名前を付ける最善の方法は何ですか? 本:設計パターン:再利用可能なオブジェクト指向ソフトウェア(ハードカバー)の要素 本:エンタープライズアプリケーションアーキテクチャのパターン(ハードカバー) Book:実装パターン(ペーパーバック) そして、答えから私が(主観的に!)収集した名前のプレフィックス/サフィックスの現在のリスト: コーディネーター ビルダー ライター 読者 ハンドラ 容器 プロトコル 目標 コンバータ コントローラ 見る 工場 エンティティ バケツ そして道のための良いヒント: 名前の麻痺を取得しないでください。はい、名前は非常に重要ですが、膨大な時間を無駄にするほど重要ではありません。10分で良い名前を思い付かない場合は、先に進んでください。

28
関数型プログラミングはGoF設計パターンを置き換えるものですか?
昨年F#とOCamlの学習を始めて以来、デザインパターン(特にJavaの場合)が命令型言語で欠落している機能の回避策であると主張する記事を数多く読みました。私が見つけた1つの記事はかなり強い主張をしています: 私が会ったほとんどの人は、Gang of Four(GoF)によるデザインパターンの本を読んだことがあります 。自尊心のあるプログラマーなら誰でも、その本は言語にとらわれず、パターンは、使用する言語に関係なく、ソフトウェアエンジニアリング全般に当てはまることを教えてくれます。これは高貴な主張です。残念ながら、それは真実からかけ離れています。 関数型言語は非常に表現力があります。関数型言語では、言語が非常に高レベルである可能性が高いため、設計パターンは必要ありません。結局、設計パターンをすべて排除する概念でプログラミングすることになります。 関数型プログラミング(FP)の主な機能には、ファーストクラスの値、カリー化、不変値などの関数が含まれます。OOデザインパターンがこれらの機能のいずれかに近似していることは明らかではありません。 さらに、OOPをサポートする関数型言語(F#やOCamlなど)では、これらの言語を使用するプログラマーが、他のすべてのOOP言語で利用可能な同じデザインパターンを使用することは明らかです。実際、現在、私は毎日F#とOCamlを使用しており、これらの言語で使用するパターンとJavaで書くときに使用するパターンとの間に顕著な違いはありません。 関数型プログラミングによってOOP設計パターンが不要になるという主張に真実はありますか?もしそうなら、典型的なOOP設計パターンとそれに相当する機能の例を投稿またはリンクできますか?

29
Javaでシングルトンパターンを実装する効率的な方法は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 Javaでシングルトンパターンを実装する効率的な方法は何ですか?

20
C ++シングルトン設計パターン
最近、C ++のシングルトンデザインパターンの実現/実装にぶつかりました。次のようになっています(実際の例から採用しています)。 // a lot of methods are omitted here class Singleton { public: static Singleton* getInstance( ); ~Singleton( ); private: Singleton( ); static Singleton* instance; }; この宣言から、インスタンスフィールドがヒープで開始されていると推測できます。つまり、メモリ割り当てがあります。メモリが割り当て解除されるのはいつなのか、私にとって完全に不明確なことは何ですか?それともバグとメモリリークはありますか?実装に問題があるようです。 私の主な質問は、どのようにそれを正しい方法で実装するのですか?

7
JavaのコアライブラリのGoFデザインパターンの例
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 GoF Javaデザインパターンを学習しています。実際の例をいくつか見てみたいと思います。Javaのコアライブラリのこれらのデザインパターンの良い例は何ですか?


18
__init __()が常に__new __()の後に呼び出されるのはなぜですか?
私はクラスの1つを合理化しようとしているだけで、フライウェイトデザインパターンと同じスタイルでいくつかの機能を導入しています。 ただし、__init__が常に後に呼び出される理由については、少し混乱してい__new__ます。私はこれを期待していませんでした。なぜこれが起こっているのか、そしてこの機能を別の方法で実装するにはどうすればよいですか?(実装をに入れるのは別として、__new__かなりハックに感じます。) 次に例を示します。 class A(object): _dict = dict() def __new__(cls): if 'key' in A._dict: print "EXISTS" return A._dict['key'] else: print "NEW" return super(A, cls).__new__(cls) def __init__(self): print "INIT" A._dict['key'] = self print "" a1 = A() a2 = A() a3 = A() 出力: NEW INIT EXISTS INIT EXISTS INIT どうして?

28
JavaScriptでのコード編成に関する一般的に受け入れられているベストプラクティス[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 jQueryのようなJavaScriptフレームワークがクラ​​イアント側のWebアプリケーションをよりリッチで機能的にするので、1つの問題に気づき始めました... 世界でこれをどのように整理しますか? すべてのハンドラを1つの場所に配置し、すべてのイベントの関数を記述しますか? すべての機能をラップする関数/クラスを作成しますか? 狂ったように書いて、それがうまくいくことを願っていますか? あきらめて、新しいキャリアを得る? jQueryについて言及しましたが、これは実際には一般的なJavaScriptコードです。何行にもわたっていくと、スクリプトファイルの管理や探しているものを見つけるのが難しくなります。私が見つけた最大の問題は、同じことを実行する方法が非常に多く、現在一般に受け入れられているベストプラクティスがどれであるかを知るのが難しいことです。 .jsファイルをアプリケーションの他の部分と同じようにきれいに保つための最良の方法に関する一般的な推奨事項はありますか?それともIDEの問題ですか?そこに良いオプションはありますか? 編集 この質問は、ファイル編成ではなく、コード編成に関するものでした。ファイルをマージしたりコンテンツを分割したりする良い例がいくつかあります。 私の質問は、実際にコードを整理するために現在一般的に受け入れられているベストプラクティスの方法は何ですか?あなたの方法は何ですか、またはページ要素とやり取りして、互いに競合しない再利用可能なコードを作成するための推奨される方法は何ですか? 一部の人々は、良い考えである名前空間をリストしました。より具体的にはページ上の要素を処理し、コードを整理して整理する他の方法は何ですか?

15
いつビルダーパターンを使用しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 いくつかのどのようなものがあり、共通の、現実の世界の例 Builderパターンを使用したのは?何で買うの?なぜファクトリーパターンを使用しないのですか?

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