3. ストラテジーパターン (Strategy)
行動をインターフェースに分離して実行中に自由に入れ替えるストラテジーパターンについて学びましょう。
ストラテジーパターン (Strategy Pattern)
ストラテジーパターンは、オブジェクトができる特定の「行動(戦略)」をクラスの内部で直接実装せず、インターフェースとして外に抜き出して、実行中に自由に取り替えられるようにパターンですね。ゲームで武器を自由に入れ替える状況を想像すると理解しやすいですよ!
(参考:全ての武器が共通で持つインターフェースを作ります)
【武器】を規定しよう:
〈攻撃する〉がなければならない()
【武器】に従う【剣】を設計しよう:
〈攻撃する〉を作ろう():
「剣で強く刺す!」を出力しよう
【武器】に従う【弓】を設計しよう:
〈攻撃する〉を作ろう():
「遠くから弓を射る!」を出力しよう
(参考:武器を持って振り回すプレイヤークラスです)
【勇者】を設計しよう:
『_装備武器』を【武器】の空っぽに隠そう
〈武器を変える〉を作ろう(【武器】の『新しい武器』):
『私』の『_装備武器』を『新しい武器』にしよう
「武器を入れ替えました!」を出力しよう
〈攻撃〉を作ろう():
もし(『私』の『_装備武器』が空っぽと同じだ)ならば:
「素手攻撃!ボコボコ!」を出力しよう
それ以外ならば:
『私』の『_装備武器』の〈攻撃する〉()を実行しよう
(参考:ゲーム開始!武器なしで素手で攻撃してみましょう)
『主人公』を【勇者】の新しい【勇者】()にしよう
『主人公』の〈攻撃〉()を実行しよう
(参考:剣を装備してもう一度攻撃!)
『主人公』の〈武器を変える〉(新しい【剣】())を実行しよう
『主人公』の〈攻撃〉()を実行しよう
(参考:モンスターが遠くにいたら弓に入れ替え!)
『主人公』の〈武器を変える〉(新しい【弓】())を実行しよう
『主人公』の〈攻撃〉()を実行しよう