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

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


8
PHPプロジェクトでは、ヘルパーオブジェクトを格納、アクセス、および編成するためにどのようなパターンが存在しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 PHPベースのオブジェクト指向プロジェクトで、データベースエンジン、ユーザー通知、エラー処理などのヘルパーオブジェクトをどのように整理して管理しますか? 大規模なPHP CMSがあるとします。CMSはさまざまなクラスで構成されています。いくつかの例: データベースオブジェクト ユーザー管理 アイテムを作成/変更/削除するためのAPI エンドユーザーにメッセージを表示するメッセージングオブジェクト 正しいページに移動するコンテキストハンドラ ボタンを表示するナビゲーションバークラス ロギングオブジェクト おそらく、カスタムエラー処理 等 私は、これらのオブジェクトを必要とするシステムの各部分がこれらのオブジェクトにアクセスしやすくするための永遠の質問に取り組んでいます。 何年も前の私の最初のアプローチは、これらのクラスの初期化されたインスタンスを含む$ applicationグローバルを持つことでした。 global $application; $application->messageHandler->addMessage("Item successfully inserted"); 次に、シングルトンパターンとファクトリー関数に切り替えました。 $mh =&factory("messageHandler"); $mh->addMessage("Item successfully inserted"); しかし、私もそのことに満足していません。ユニットテストとカプセル化は私にとってますます重要になり、私の理解では、グローバル/シングルトンの背後にあるロジックはOOPの基本的な考え方を破壊します。 それからもちろん、各オブジェクトに必要なヘルパーオブジェクトへのポインターの数を与える可能性があります。おそらく最もクリーンで、リソースを節約し、テストしやすい方法ですが、長期的にはこれの保守性に疑問があります。 私が調べたほとんどのPHPフレームワークは、シングルトンパターン、または初期化されたオブジェクトにアクセスする関数を使用しています。どちらもすばらしいアプローチですが、先ほど述べたように、どちらにも満足しています。 ここにどのような一般的なパターンが存在するかについて、視野を広げたいと思います。私はからこれを議論するリソースへの例、追加のアイデアやポインタを探しています長期的、現実世界の視点。 また、この問題に対する専門的でニッチなまたは奇妙なアプローチについても興味を持っています。
114 design-patterns  oop  php 

16
ネストされたtry catchブロックを回避するパターン?
計算を実行する方法が3つ(またはそれ以上)あり、それぞれ例外が発生して失敗する状況を考えてみます。成功するものが見つかるまで各計算を試行するために、私は次のことを行っています: double val; try { val = calc1(); } catch (Calc1Exception e1) { try { val = calc2(); } catch (Calc2Exception e2) { try { val = calc3(); } catch (Calc3Exception e3) { throw new NoCalcsWorkedException(); } } } これをより良い方法で実現する受け入れられたパターンはありますか?もちろん、失敗したときにnullを返すヘルパーメソッドで各計算をラップし、??演算子を使用することもできますが、これをより一般的に行う方法があります(つまり、使用する各メソッドのヘルパーメソッドを記述する必要はありません) )?私は、特定のメソッドをtry / catchでラップし、失敗するとnullを返すジェネリックスを使用して静的メソッドを作成することを考えましたが、どうすればよいかわかりません。何か案は?

13
ブリッジパターンと戦略パターンの違いは何ですか?
dofactoryやwikipedia、そして多くのサイトに関する多くの記事を読もうとしました。ブリッジパターンと戦略パターンの違いはわかりません。 どちらも抽象化を実装から切り離し、実行時に実装を変更できることを知っています。 しかし、どのような状況で戦略を使用する必要があるのか​​、またはどのような状況でブリッジを使用する必要があるのか​​はまだわかりません。

13
シングルトンの代わりとなるもの
アプリケーションの構成情報を保持するクラスがあります。以前はシングルトンでした。いくつかのアーキテクチャのレビューの後、シングルトンを削除するように言われました。さまざまな構成を一度にテストできるため、単体テストでシングルトンを使用しないことにはいくつかの利点があります。 シングルトンなしでは、コード内のあらゆる場所でインスタンスを渡す必要があります。非常に乱雑になっているので、シングルトンラッパーを作成しました。同じコードをPHPと.NETに移植していますが、構成オブジェクトに使用できるより良いパターンがあるかどうか疑問に思っています。

8
コメットとjQuery [終了]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 私はjavascriptを使用したサーバープッシュについていくつかの調査を行いましたが、私が探しているのは「コメット」デザインパターンにあるという一般的なコンセンサスがわかったのです。jQueryの上に構築されたこのパターンの適切な実装はありますか?そうでない場合、このパターンの良い実装はまったくありますか?そして、これらの質問への回答に関係なく、実装の観点からこのパターンに関するドキュメントはありますか?

2
Doctrine 2のプロキシとは何ですか?
私はすべてのDoctrine 2ドキュメントを読み終え、自分のサンドボックスを開始しました。ほとんどのプリンシペを理解しましたが、それでも質問があり、ドキュメントで完全な説明を見つけることができませんでした。 Proxyクラスとは? エンティティに対していつ使用する必要がありますか? 私が理解している限り、プロキシクラスはレイヤーを追加してエンティティに他のいくつかの機能を追加できるようにしますが、エンティティクラスにメソッド自体を実装する代わりにプロキシを使用するのはなぜですか?


8
デリゲートはどこで使用しますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 7年前休業。 この質問を改善する デリゲートを必要とする実際の場所は何ですか?この方法が最善の解決策である状況またはパターンが存在することに興味があります。コードは不要です。

8
カイル・シンプソンのOLOOパターンvsプロトタイプ設計パターン
カイル・シンプソンの「OLOO(他のオブジェクトにリンクするオブジェクト)パターン」は、プロトタイプのデザインパターンとどう違うのですか?「リンク」(プロトタイプの動作)を具体的に示し、ここで「コピー」する必要がないこと(クラスの動作)を明確にすることを除いて、彼のパターンは正確に何を導入していますか? これは、彼の著書「You Do n't Know JS:this&Object Prototypes」からのカイルのパターンの例です。 var Foo = { init: function(who) { this.me = who; }, identify: function() { return "I am " + this.me; } }; var Bar = Object.create(Foo); Bar.speak = function() { alert("Hello, " + this.identify() + "."); }; var b1 = Object.create(Bar); b1.init("b1"); var …

10
MVCは設計パターンまたはアーキテクチャパターンですか
SunとMsdnによると、これはデザインパターンです。 ウィキペディアによると、それは建築パターンです 設計パターンと比較すると、建築パターンは規模が大きくなります。(ウィキペディア- 建築パターン) それとも、デザインパターンもある建築パターンですか? どちらが本当ですか?


12
回避する設計パターン[クローズド]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 多くの人が同意しているようです。シングルトンパターンには多くの欠点があり、パターンを完全に回避することを提案する人もいます。ここで素晴らしい議論があります。シングルトンパターンに関するコメントは、その質問に向けてください。 私の質問:他のデザインパターンはありますか?

3
リポジトリとサービスの違いは?
リポジトリとサービスの違いは何ですか?つかんでいないようです。 私はデータアクセスレイヤーを介したデータアクセスについて話している。通常はlinq to sqlを使用している。 非常に多くの場合、単純なCRUDメソッドを備えたリポジトリと、よりビジネス固有のメソッドを備えたサービスを目にします。 このブログ投稿を例にとります。下部のインターフェース(画像)を見ると、彼には2つのリポジトリーと2つのサービスがあります。どこに何を置くべきかをどうやって知るのですか? 先ほど申し上げたように、リポジトリはCRUDのような運用向けで、サービスはよりビジネス指向のようです。 ありがとう

8
jQuery / JavaScriptコードを整理する最良の方法(2013)[終了]
ここで何が尋ねられているのかを知るのは難しい。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 問題 この回答は以前に回答済みですが、古くて最新ではありません。1つのファイルに2000行を超えるコードが含まれていますが、誰もが知っているように、特にコードを調べたり、新しい機能を追加したりする場合、これは悪い習慣です。現在と将来のために、コードをよりよく整理したいと考えています。 多数のボタン、UI要素、ドラッグ、ドロップ、アクションリスナー/ハンドラー、および複数のリスナーが同じ関数を使用する可能性のあるグローバルスコープ内の関数を備えたツール(単純なWebサイトではない)を構築していることを述べておく必要があります。 コード例 $('#button1').on('click', function(e){ // Determined action. update_html(); }); ... // Around 75 more of this function update_html(){ .... } ... その他のサンプルコード 結論 私は本当にこのコードを整理して、繰り返し使用しないで、新しい機能を追加したり、古い機能を更新したりできるようにする必要があります。一人でこれに取り組みます。一部のセレクターは100行のコードになる場合があります。その他のセレクターは1です。少し調べてみると、require.js繰り返しが多く、実際には必要以上のコードを記述していることがわかりました。私はこの基準に当てはまる可能性のある解決策を受け入れ、リソース/例へのリンクは常にプラスです。 ありがとう。

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