Kanade Logoカナデ Kanade

2. ファクトリーパターン (Factory)

オブジェクトの生成を工場に委任して結合度を下げるファクトリーパターンについて学びましょう。

ファクトリーパターン (Factory Pattern)

ファクトリーパターンは、オブジェクトを生成する仕事を専担する工場(クラスやメソッド)を別に設けるパターンですね。このようにすると、条件によって異なるオブジェクトを生成しなければならない時、使う側のコードを修正しなくても工場の内部だけ修正すれば良いので、メンテナンスがとても楽になりますよ!

カナデでは、インターフェース静的メソッドを活用してファクトリーパターンをすっきりと実装できます。

(参考:動物が共通で持つ行動をインターフェースとして規定します)
【動物】を規定しよう:
    〈鳴く〉がなければならない()

(参考:インターフェースに従う実装体を作ります)
【動物】に従う【犬】を設計しよう:
    〈鳴く〉を作ろう():
        「ワンワン!尻尾を振ります。」を出力しよう

【動物】に従う【猫】を設計しよう:
    〈鳴く〉を作ろう():
        「ニャー!香箱座りをします。」を出力しよう

(参考:文字列を受け取って適切な動物を作り出す工場です)
【動物工場】を設計しよう:
    【動物】を返す『私たち』の〈お迎えする〉を作ろう(【文字列】の『種類』):
        もし(『種類』と「犬」が同じだ)ならば:
            新しい【犬】()を返そう
        もしくは(『種類』と「猫」が同じだ)ならば:
            新しい【猫】()を返そう
        
        「分からない動物です!」を出力しよう
        空っぽを返そう

(参考:ファクトリーを通してオブジェクトを生成し、インターフェースで同じように扱います)
『私のペット』を【動物工場】の〈お迎えする〉(「猫」)にしよう
『私のペット』の〈鳴く〉()を実行しよう

『友達のペット』を【動物工場】の〈お迎えする〉(「犬」)にしよう
『友達のペット』の〈鳴く〉()を実行しよう

プレイグラウンド (Playground)

ターミナル
コードを書いて「実行」ボタンを押してください。