デザインパターン - Factory Method
【Factory Methodパターンとは】
インスタンスの生成をサブクラスに任せることで、柔軟なインスタンス生成が可能なパターン。
【Factory Methodパターンのクラス図】
【FactoryMethodパターンのメリット】
同じフレームワーク(Factory,Product)を使って、複数を製品が作りだせる。
代表的にDaoオブジェクトを作り出すなど
【サンプル】
Factory.java |
package factoryMethod;
public abstract class Factory {
// 製品を作る
public Product create(String name) {
return createProduct(name);
}
// 具体的な製品をサブクラスで作る
protected abstract Product createProduct(String name);
}
|
Product.java |
|
KnifeFactory.java |
package factoryMethod;
/*
*刀工場
*/
public class KnifeFactory extends Factory{
@Override
protected Product createProduct(String name) {
return new Knife(name);
}
}
|
Knife.java |
package factoryMethod;
/*
* 刀クラス
*/
public class Knife implements Product{
private String name;
public Knife(String name) {
this.name = name;
System.out.println(this.name + "を作りました。");
}
@Override
public void use() {
System.out.println(this.name + "を使います。");
}
}
|
FactoryMethodTest.java |
package factoryMethod;
public class FactoryMethodTest {
public static void main(String[] args) {
// 刀工場を生成
Factory factory = new KnifeFactory();
// 日本刀を作る
Product knife1 = factory.create("日本刀");
// 包丁を作る
Product knife2 = factory.create("包丁");
knife1.use();
knife2.use();
}
}
|
結果 |
日本刀を作りました。
包丁を作りました。
日本刀を使います。
包丁を使います。
|