2012-02-21 1 views
0

私はこの問題のために使用する必要がどのデザインパターン解決しようとしています:新しいアルゴリズムを簡単に追加するためのパターンを設計するには?

私はクラスのコンピュータとアルゴリズム

1を持っている)コンピュータ

2の事例の多くがあるかもしれません)すべてのコンピュータをアルゴリズムの正確に一つのインスタンスを持つことができます

3)アルゴリズムは、具体的なアルゴリズムがクラスコンクリートの中にある、それは)「計算」

4つの空隙を持つべき抽象のいくつかの種類でありますteAlg1、ConcreteAlg2などですので、多くの異なるクラスの具体的なアルゴリズムがあります。

私の目標は、ConcreteAlg235クラスが追加されたことを知らずに新しいConcreteAlg235インスタンスを作成するコンピュータインスタンスを作成することです。だから、私の目標は、新しいアルゴリズムクラスを簡単に作成して、クラスComputerのコードを編集することなくクラスComputerのインスタンスにインスタンスを作成することです。

独自のソフトウェアを使用して、ユーザー向けに新しいアルゴリズムを追加したり、自分のソースコードを簡単に保守できるようにしたいと考えてください。

は、アルゴリズムの

+0

なぜ私はこの質問が異例にダウン投票されたのだろうか? – aviad

+0

@aviad私も理由を知りたいです。 – John

+0

downvoterが – aviad

答えて

2
+0

この名前の方が適していますが、この特定の場合のアイデアはほとんど同じです... – aviad

+0

これはコマンドパターンよりもはるかに簡単です – John

+0

いいえ、コマンドパターンを探しています....スワップパート(再コンパイルなしなど)は、使用するテクノロジによっては簡単に可能です。コマンドパターンは、一連のクラスがイベントを処理することを可能にし、シリーズは変更可能なシリーズにすることができます。戦略では、実装を取り替える必要があります...私は実際にやっているのと同じことをしていますが、それを行う方法は異なりますが、適切なパターンはコマンドパターンです。 – vinnybad

1

方法についてCommand pattern任意のアイデアをありがとう!あなたはコンピュータをインスタンス化するときに、メソッドを実行すると、コマンド・インタフェースの実装を期待することを確認することができます。この方法では、

0

戦略とコマンドパターンが類似している(より適切なものに名前を変更することができます)まだ異なる。戦略パターンを使用すると、特定のアルゴリズムの実装を入れ替えることができます。あなたがここで探しているのは、具体的なクラスが共通のインタフェースを実装するコマンドパターンです。パブリックメソッドをComputerクラスに追加し、内部的に保持するコマンドリストに追加して処理することができます...ただし、コンピュータごとにこのアルゴリズムリストを変更することにしますが、これは実行する方法の1つです非常に簡単です。

関連する問題