日々精進

新しく学んだことを書き留めていきます

オブジェクト指向のこころ5

Abstract Factoryパターンの目的はロジックとロジックを選択するスイッチ文を分離すること。
一つの変数を複数のスイッチ文で使用していたら(switch句のすぐ後に来ていたら)Abstract Factoryを使うべき。
例えば、以下のようなコード。

public sub GetCodeNo()
  switch _regionCode
    case USA
      _codeNo = 1
    case JAPAN
      _codeNo = 2
  end
end

public sub IsPlayable
  switch _regionCode
    case USA
      _playable = true
    case JAPAN
      _playable = false
  end
end

↑のコードでは_regionCodeが複数のswitch文で使用されている。
switch文はstrategyパターンで取り除くのが基本だが、switch文が複数あり、使用される実装の組み合わせが決まっている場合(例えば、ユーザのregionがUSAなら_codeNoは1だし、_playableはtrueになるといったように。)はその組み合わせをAbstract Factoryクラスで定義することで複雑さを低減することができる。


Abstract Factoryを適用する前に考えるべきことは
1どんなパターンがあるか
2どんなロジックがあるか
3生成ロジックをどこにかくか


Abstract Factoryパターンの目的をまとめると
・実装とその選択を分離できる
・実装のセットをファクトリークラスとして定義できる