GameManagerFactoryClassの実装

GameManagerを生成するGameManagerFactoryClassを実装していきます。

Factoryクラスって何?

複雑なオブジェクトを生成する時にはデザインパターンの1つであるFactoryパターンが使えます。

Factoryパターンを使うことにより、可読性と保守性を向上させていきましょう。

GameManagerFactoryClassの実装

GameManagerFactoryClassを実装して複雑なGameオブジェクトの生成責務を持ってもらいます。

game_factory.rbを作成してください。

# frozen_string_literal: true

require_relative "const"
require_relative "game_manager"
require_relative "player"
require_relative "board"

# GameManagerクラスを作成する
class GameManagerFactory
  class << self
    # 概要: GameManagerクラスを作成し返却する
    # 引数: なし
    # 戻り値: GameManegerクラスのインスタンス
    def create
      board = Board.new([
                          [OPEN_SLOT, OPEN_SLOT, OPEN_SLOT],
                          [OPEN_SLOT, OPEN_SLOT, OPEN_SLOT],
                          [OPEN_SLOT, OPEN_SLOT, OPEN_SLOT]
                        ])

      GameManager.new(player1: Player.new(piece: PLAYER1_PIECE), player2: Player.new(piece: PLAYER2_PIECE), board: board)
    end
  end
end

以下のように呼び出すことによってGameオブジェクトを作成できるようになりました。

game = GameManagerFactory.create

このクラスを用いて、次のセクションでTicTacToeクラスを実装したいと思います。

最終更新