0

私はここで、デザインパターンをよりよく理解することで解決できると思われる問題に対する答えを調査し、探しています。問題は、私が独学のコーダーであり、人々は多くの秘教的な用語に精通していると想定する傾向があることだと思います。私は、いくつかのフレーズが何を意味するのかを判断しようとして、ウィキペディアのスパイラルに行き着きました。そうは言っても、コーディング/構造の問題についてです。

実際、始める直前に、私の質問でコードが構造化されている方法で、未知の推定をしている可能性があることを指摘する必要があります。これが事実である場合、人々は私が提案しているものの代替案を提案することができますか?間違っていると言われるのではなく、コードを改善する方法を学んでいただければ幸いです。わかった...

4つの壁、天井、床がある部屋クラスがあるとします。これらは、部屋の「内部」でインスタンス化されます。部屋には、4つのTableLegを持つテーブルもあり、これもテーブル内、ルーム内でインスタンス化されます。(これは作曲だと思いますが、間違っている場合は訂正してください!)

最後に、問題:誰かが何らかの形でテーブルを押した場合、TableLegは、適切なサウンドをトリガーするために、立っているフロアのタイプを確認する必要があります。これは、現在私の解決策になります:

テーブルはイベントをディスパッチします。Roomは、その「テーブルプッシュ」イベントをリッスンし、フロアをクイズしてそのタイプを判別し、次にそのタイプをテーブル上のメソッドに渡します。次に、テーブルはそれをTableLegsに渡します。これは、私にはかなりエレガントではないようです。したがって、デザインパターンの知識が役立つのではないかと疑っています。私が説明した構造について、私が評価していないという根本的な問題がありますか?もしそうなら、代替手段は何ですか?

最後に、GangofFourの本について聞いたことがあります。それが私の最初の寄港地である場合、それはアクセシブルなスタイルで書かれていますか、それともそれを把握するためにコンピュータサイエンスを勉強しなければなりませんか?長い、デザインパターン初心者の質問でごめんなさい。

4

2 に答える 2

1

フロアはオブジェクトイベントをリッスンできます。イベントインターフェイスは、オブジェクトのジオメトリ、マテリアルなどに関する情報を公開できます。次に、フロアは衝突をチェックしてサウンドを再生できます。

私は本HeadFirstDesignPatternsをお勧めします

于 2013-02-14T11:47:18.967 に答える
0

あなたの質問に答えられるかどうかはわかりませんが、「デザインパターン」の本について何かお話しすることができます。

1994/1995年に出版されたとき、それはインスタントクラシックでした。C ++とSmalltalk(当時はJavaやC#はありませんでした)の例を使用して、オブジェクト指向プログラミングにおける26の一般的な問題の解決策をリストしました。それは、何年も後に学会によって熱心に取り上げられた力と決議を文書化するためのフォーマットを提供しました。私を含む多くのプログラマーは、一冊の本が彼らをスーパースターにできることを期待して、聖典のようにそれを研究していました。

その後、現実が始まりました。

関数型プログラマーは、パターンはOOPの欠陥の回避策であると述べました。大騒ぎは何ですか?彼らはパターンに頼ることなくこれらのことをすることができました。

この本を最初に読んだときの通常の反応は、その時点でたまたま書いているコードにできるだけ多くのパターンを当てはめることです。

デザインセッションでパターン名を使用していることに気付くでしょう。「ここには責任の連鎖が必要だと思います!」

やがてあなたは落ち着き、パターンがあなたの問題に対する答えではないことに気づきます。それらを使用する最良の方法は、あなたの問題と解決策について真剣に考え、あなたの答えがたまたまパターンに陥っていることに突然気づくことです。

あなたの問題に関しては、私はあなたがパターンを必要としないと思います。サウンドを生成する前に、テーブルにそのタイプについて尋ねるメッセージをフロアに送信してもらいます。それで終わりです。シンプルさは美徳です。

于 2013-02-14T11:43:13.783 に答える