3

Fowler の「Refactoring」の第 1 章を読んでいました。

51 ページに、価格クラスが添付されたムービーが表示されます。最初のアプローチは、継承を使用して複数のムービーを作成し、それぞれに独自の getCharge メソッドを使用して価格を計算するというものでした。38 ページでは、このアプローチは静的すぎるため放棄されています。映画の分類を変更するのは非常に困難です。ただし、51 ページでは、今度は価格のために継承が再び使用されます。価格の 3 つのサブクラスが追加されました: ChildrensPrice、NewReleasesPrice、RegularPrice。この設計では、価格オブジェクトを変更することで映画の分類を簡単に変更できます。ただし、ここに新しい価格カテゴリを追加するには、新しいクラスを追加する必要があります。

名前フィールドを持つインターフェイスまたは抽象クラスに基づいてクラス Price を作成する方が簡単ではないでしょうか。名前は「ChildrensPrice」にすることができ、新しいクラスを作成することなく、必要な他の価格カテゴリを定義できますか?

これは、「ハードコードされたクラスをより動的な表現に変更する」などの名前のリファクタリング パターンですか?

そのようなアプローチの長所と短所は何でしょうか?

4

1 に答える 1