0

そこそこどのような反復パターンが同じパラメータを何度も繰り返し回ることが関係していますか?

House = function() { /* constructor */ } 

House.childPlay (childId) { ... } 
House.childLearn (childId) { ... } 
House.childEat (childId) { ... } 

...のは、私はいくつかのコードを持っているとしましょう、暗黙のうちに、このハウスオブジェクトは、子どもを「持っている」が、それは必ずしもまだ、子オブジェクトを持っていません。それは私が疑問に思っているものです。子供の周りを回るその定数は怪しいようです。ハウスをちょうどする必要があります子オブジェクトのコレクションですか?

私の唯一の懸念は、いくつかの操作がハウスとチャイルドの間にあり、相互作用するようなものだということです。したがって、Childオブジェクトは親オブジェクトの認識を必要とします。

House.Child.clean() { 
    self._cleaningStrategy(self.house._provideMop()); 
} 

「パラメータオブジェクト」というデザインパターンがあります。これは?私はタプルのパラメータを渡していると思いますが、ここでは1つしか渡しません。

+1

あなたの懸念事項は何ですか?このIDを渡すとコードにどのような影響がありますか? – Marcin

+1

同じように有効な質問は、「なぜ家が子供に属していないのですか? ...しかし、あなたはなぜそれが当てはまらないのか私たちに語ったことはありません。子供たちがお金を持っていないからだと思います。 –

+0

はい、常に同じパラメータを使いすぎると冗長すぎる/不器用で、より良い方法があるということです。 –

答えて

1

子供の行動が家とは独立しているように聞こえます(そしてそうすべきです)。私たちは子供が食べたい場合は、その家とは何の関係もありませんので、これは移動するための方法のようになります。

Child.Eat(); 

私たちは子供が家をきれいにしたい場合は、我々はこれを行う必要がありますように、それが聞こえます:

Child.CleanHouse(house); 

このようにして、子供は別の家を掃除することもできます。 1つの家だけではありません。

CleanHouse()は次のようになります。

Mop mop = house.GetMop(); 
// Perform cleaning activities here. 

は私が家オブジェクトの子の行動を持っていることのあなたの懸念に同意します。これは、OOP単体責任原則(家は家事のみを行うべきです)、および設計考え方インフォメーションエキスパート(責任を果たすために必要な情報を持つクラス)に違反しています。家は家に特有の行動を含むべきであり、子供は子供に特有の行動を含むべきであり、さもなければ彼らはあまりにも強く結合している。

これはOOPの問題と同じくらいデザインパターンの問題であるかどうかわかりません。

+1

'Child.Eat(); 'LOL! – Jacob

+1

House.EatChild()よりも優れていると思います。 :o) –

+0

いくつかのホラー映画では、私は家が子供を食べることをかなり確信しています。聞いたことがない! –

関連する問題