FactoryMethodパターン Java
デザインパターンの一つであるFactoryMethodパターンについて記述する。

FactoryMethodパターンとは?
Javaオブジェクトはsuperクラスを定義し、抽象メソッドの実装をsubクラスで実装する。
そうすることで、柔軟なJavaクラスを作成することができ、使い回しのきくアーキテクチャになる。
FactoryMethodパターンは、インスタンスの生成を簡潔できることで、テストするための実装としても使えると個人的には思う。
サンプルコード
抽象的なProduct
クラスを実装。
1 2 3
| public abstract class Product { abstract void use(); }
|
抽象的なFactory
クラスを実装。
1 2 3 4 5 6 7 8 9 10 11
| public abstract class Factory {
public final Product create(String name) { Product product = create(name); register(product); return product; }
protected abstract Product create(String name); protected abstract void register(Product product); }
|
具象的なAccountFactory
クラスを実装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class AccountFactory extends Factory {
private List names = new ArrayList();
protected Product create(String name) { return new Account(name); }
protected void register(Product product) { owners.add(((Account)product).getNames()); }
public List getNames() { return names; } }
|
具象的なAccount
クラスを実装。
1 2 3 4 5 6 7 8 9 10 11 12
| public class Account extends Product {
private String name;
Account(String name) { this.name = name; }
public String getName() { return this.name; } }
|
Mainクラスの実装。
1 2 3 4 5 6 7 8 9
| public class Main { public static void main(String[] args) { Factory factory = new AccountFactory(); Product account01 = factory.create("account01"); Product account02 = factory.create("account02"); Product account03 = factory.create("account03"); Product account04 = factory.create("account04"); } }
|