問題タブ [template-method-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
183 参照

.net - テンプレート化されたデリゲート

次のコードパターンがあります。

唯一の違いは、戻り値の型と、メソッドへのパラメーターの数と型が異なる可能性があることです。

「いくつかの作業を行う」部分を除くすべてのコードを処理する汎用/テンプレート化されたメソッドを作成したいのですが、どうすれば実現できますか。

0 投票する
1 に答える
342 参照

php - Template メソッド設計パターンでのオブジェクトの状態

これは、 http: //sourcemaking.com/design_patterns/template_method/php の基本抽象クラスのアルゴリズムの実装例です。

「showBookTitleInfo」が呼び出すメソッドについてあまりにも多くのことを知っていると思うので、私はそれが好きではありません。

別の例を次に示します。抽象クラス template_method { var $state; public function __construct() { $this->state = 0; }

値を変更しないのに、なぜイベントを参照として渡すのでしょうか? 現在の状態を使用していて、その値を変更でき、他のステップが変更された値を読み取って変更できる場合、「私のステップ」ロジックをどのように実装すればよいですか?

たとえば、スケジュールされたメッセージ送信のコスト カウント メカニズムを実装したいと考えています。

したがって、次のように抽象クラスにアルゴリズムを実装します。

私は正しい方向に進んでいますか?Template メソッドの設計パターンを実装する必要がある場所ですか? このコードに問題がある場合はお知らせください。

PS コストカウンターは生産コードではありません。感想を言いたくて書きました。

前もって感謝します

0 投票する
19 に答える
72818 参照

design-patterns - テンプレートメソッドと戦略パターンの違いは何ですか?

テンプレートメソッドパターンと戦略パターンの違いは何ですか?

私が知る限り、それらは 99% 同じです。唯一の違いは、テンプレート メソッド パターンが基本クラスとして抽象クラスを持っているのに対し、戦略クラスは各具象戦略クラスによって実装されるインターフェイスを使用することです。

しかし、クライアントに関する限り、それらはまったく同じ方法で消費されます - これは正しいですか?

0 投票する
2 に答える
1899 参照

oop - テンプレートの方法と戦略の設計パターン

私はパターンを設計するのが初めてなので、これはおそらく初心者の質問ですが、テンプレートメソッドと戦略 DP を見ていましたが、それらは非常に似ているようです。定義を読んだり、UML を調べたり、コード例をチェックしたりできますが、私には、Strategy パターンは Template Method パターンを使用しているだけのように見えますが、たまたまそれをオブジェクト (つまり、構成) に渡しているだけです。

さらに言えば、テンプレート メソッドは基本的な OO 継承にすぎないようです。

それらの違いのいくつかの重要な側面が欠けていますか? テンプレートメソッドについて、基本的な継承以上のものを見逃していますか?

注: これに関する以前の投稿 ( 672083 ) がありますが、いつ使用するかについて詳しく説明されています。

0 投票する
1 に答える
111 参照

.net - C# イベントを介してテンプレート メソッド パターンを実装することは良い方法ですか?

私は今、いくつかのコードを理解しようとしていますが、少し奇妙に思えるパターンを見つけました。「EditorOpen」イベントを持つユーザーのコントロール クラスがあります。MSDN が示唆するように、'-ing' または '-ed' で終わっていないため、最初はこの名前が間違っていると思いました。しかし、後で、このイベントは何かが起こっていることを通知するのではなく、実際の操作を行うためのある種の REQUEST であることがわかりました。これは、「エディタのオープン」を実行することが期待されるクライアント コードです。

これが実際には、1 つのアクション プレースホルダーに複数のアクションを関連付けることができるテンプレート メソッド デザイン パターンの何らかの形式であることを知って、少し驚きました。

非常に興味深いと思いますが、そのような場合にイベントを使用すると誤解を招く可能性があるのではないかと心配しています。とにかく、ここではイベントについてではなく、リクエストについて話しています。うーん…イベントの名前だけが「EditorOpeningRequest」か「EditorOpeningRequested」だったらいいかも。どう思いますか?コードレビュー中にこれをどのようにコメントしますか?

0 投票する
3 に答える
779 参照

java - テンプレート メソッド パターン

childClass メソッド getInfoFromDB() と saveToDB() が異なるロジックを実行する必要がある場合、childClass を作成する方法を教えてください。

0 投票する
9 に答える
13863 参照

design-patterns - テンプレート メソッド - パターンはどこで使用する必要がありますか?

Template Method - pattern を使用する必要がある状況の例を誰か教えてもらえますか?

あなた自身の経験から、実際の使用方法を教えてください。

(これまでのところ、DA レイヤーでデータをマッピングする場合にのみ有用であることがわかりました。申し訳ありません!!!)

0 投票する
1 に答える
844 参照

design-patterns - ワークフローの例に適用されたSRP:適切な方法でクラスを構造化する方法

クラスの責任を決めるのに問題があります。
私は3つのhtmlフォームを持っています:

  1. フォームごとに、含まれるフォームのテキストとマーカーを含むhtmlテンプレートがあります。
  2. エラーが発生した場合は、各フォームを検証する必要があります。テンプレートと(1)のフォームを、いくつかのエラーメッセージとともに再表示する必要があります。一部のフィールドのみが、さまざまなフォームに共通しています。
  3. エラーがない場合は、結果メッセージをメールで送信する必要があります。フォームごとに結果メールテンプレートがあります。

この問題に適したクラススキームを決定するのは非常に難しいと思います。1つの可能性は、機能によってクラスを分離することです

  • CheckFormData:フォームデータのチェック
  • DisplayForm:エラーの有無にかかわらずフォームを表示します(またはこれも分離しますか?)
  • EmailForm:emailform。

これについてはよくわかりません。ある特定の形式の分野に関する知識は、さまざまなクラスに分散しています。

いくつかのワークフローがあります。多分私はワークフロークラスも持っているべきです:

フォームタイプごとに(3つあることを忘れないでください)、

  1. CheckForm
  2. EmailForm
  3. DisplayFormクラス。

3 * 3=9クラス+3基本クラス=12クラス。
また、適切なCheckForm-subclassとEmailForm-subclassをワークフローに挿入する必要があります。これらはすべて、同じフォームタイプである必要があります。たぶん、このためにFormWorkFlowFactoryを作成する必要があります。これにより、最大13のクラスが追加されます。

今、私はひどく間違ったことをしていると感じました。テンプレートメソッドクラスとして持っていた場合FormSubmitWorkFlow、3つのサブクラスを作成することもできますが、各サブクラスは異なる責任を混合します。

これをどのように改善できますか。また、答えをやる気にさせることができますか。つまり、どの方法で答えを導き出すことができますか。


編集:現在の唯一の答えは有用ですが、それに同意する人々からの投票を見るのはいいことです。あるいは、コミュニティからより良い解決策を聞きたいです。この答えに賛成したのは私だけです。この質問はより多くの入力を使用する可能性があるので、遠慮なく提供してください:-)

0 投票する
3 に答える
1673 参照

design-patterns - テンプレートメソッド(分離)と戦略パターンの違いは?

私の先生は本当に良い人で、彼のポイントを理解する傾向がありますが、これは私の頭を悩ませています. 彼は Template Method を 2 つのバリエーションで説明しています。
- 統一: 標準のバリアント。それ以外の場合は修正されたアルゴリズムのバリアント部分を定義するいくつかの抽象メソッドを持つ抽象クラスで構成されます。
- 分離: クラスに templateMethod() が含まれ、インターフェイスへの委譲を使用してアルゴリズムの部分を変更する彼自身のバリアント (と思いますか?) は、Strategy パターンとまったく同じように見えます。

彼のポイントが何であるか、そして「分離」バリアントが戦略パターンとどのように異なるかを誰でも見ることができますか?
彼の本 (まだ出版されていません) から 2 つのパターンを含む画像を添付しました。

http://img64.imageshack.us/img64/3620/strategytemplate.jpg

0 投票する
2 に答える
2377 参照

c++ - C ++:NVIとテンプレートメソッドパターンの違いは?

NVI(非仮想インターフェイス)とテンプレートメソッドパターンの違いは何ですか?

それらは非常に似ているように見え、基本的に同じであり、テンプレートが何らかの形でより一般的であるという点で微妙に異なることの両方を読みました。