6ヶ月前、私はThoughtWorksのインタビューを行い、コーディングラウンドに出かけました。 私のOO設計スキルを向上させたいデザインパターンを使用して最も安いホテルファインダーを実装する方法は?
私はヘッドファーストデザインパターンを読んで、共通のデザインパターンの基本的な考え方を知りました。 私は現在iOSで作業していますが、私はObjective Cを勉強していますが、動的言語を使ってさまざまなデザインパターンを適用し、物事を理解しています。
しかし、私はまだこのサンプルの問題で使用されているパターンの適切な選択が何であるかについて確かめたいと思います。
などのスキルを向上させるためのヒントになる場合があります。
ここに問題があります。
ホテルチェーンがあります。 LakeWood、Rosewood、xyzWoodの3つの枝があります。 とそのすべてが、曜日が平日か週末か、顧客が報酬か定期的かの組み合わせに応じて4種類の料金があります。
ユーザー入力は、ホテルとそのタイプのいずれかに滞在したいと思う一連の日付です。 出力は、宿泊施設全体で最も安い最高のホテルになるはずです。 ネクタイの場合は各ホテルの評価があり、評価の高い方はネクタイを決定します。 とプログラムは、新しいアルゴリズムを使用して最高のホテルを見つけることができるように、またホテルの構造が変更されたり、ホテルが追加されるように柔軟にする必要があります。
私はJavaに関して次のクラスで私たちに来ました。
- ホテル:ホテルを戻すfinderメソッドを持っていた評価、名前、および速度の4種類
- HotelFinderインタフェース。
- このインターフェイスを実装し、顧客または顧客タイプのような属性を持つCheapestHotelFinderクラスは、列挙型[不明]および日付のリストである可能性があります。
- おそらく、顧客の詳細が日付nタイプであり、この顧客がファインダに与えられているCustomerクラスです。
- ホテルクラスに匹敵するインターフェイスを使用できる方法はありますか?
- と私たちのためにすべての仕事をする予約システムシングルトンクラスです。
私はここに閉じ込められています。誰もが私のデザインを助けてくれることを願っています。
Dooughworksは、 '本で' OO設計が必要ですか? :-O –
わからない...しかし、一般的にどのようにあなたはそれをabtに行きますか? –
私はアインシュタインのルールに従う傾向があります:「できるだけシンプルにするが、シンプルではない」。あなたのクラスのセットは大丈夫です。それらを実際に実装しようとしましたか? –