GRASPパターン - Creatorパターン(生成者パターン)

Advertisement

Creatorパターンが提唱するもの

Creatorパターンはオブジェクト生成を行う責務をどのように割り当てるか提唱している。具体的には、そのクラスを包括しているクラスがインスタンスの生成を行うことが望ましいとされている。

考察

Creatorパターンの原則に従わず、関係のないクラスにインスタンス生成を任せると、クラス同士の関係が複雑になり、保守性が低下してしまう。基本的に、クラスの包括関係を表す階層図を作成し、各々のクラスは自分が保持しているクラスのインスタンス生成を行うようにする。

メリット

  • 再利用性の向上
  • 責務分散の抑止

ものすごく単純な例

シナリオ
Mainクラスはデータベースにクエリを送信した結果をCSVクラスに渡す。CSVクラスはStreamWriterクラスを使用してファイル出力を行う。

始めにインスタンスの包括関係を表した階層図を考える。
階層図

Creatorパターンを意識して考えると、階層図において相対的に自分の下に位置するクラスのインスタンスを生成することになる。上記の例ではMainクラスがCsvクラスのインスタンス生成を行い、CsvクラスがStreamWriterクラスのインスタンスを生成する。

コードでの例(Java)

class Main{
    public static void main(String[] args){

        // 処理省略

        Csv csv = new Csv()

        // 処理省略

    }
}

class Csv{
    public Csv(){
        StreamWriter writer = new StreamWriter("c:\test.txt");

        // 処理省略
    }
}

×
class Main{
    public static void main(String[] args){

        // 処理省略

        StreamWriter writer = new StreamWriter("c:\test.txt");
        Csv csv = new Csv(writer)

        // 処理省略

    }
}

class Csv{
    public Csv(StreamWriter writer){
        // 処理省略
    }
}

Advertisement

ショートカット

634トップページ
このカテゴリのトップページに戻る
634ラボ

サイト検索

Google

Web サイト内

Y!ログール