GRASPパターン - Creatorパターン(生成者パターン)AdvertisementCreatorパターンが提唱するもの
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ラボ サイト検索Y!ログール |