Factory Method パターンAdvertisementオブジェクト生成を管理するクラス
オブジェクトを生成するクラスを作成することにより、柔軟なオブジェクト生成ができるようになる。また、ひとつのインタフェースだけで、数種類のオブジェクト生成に対応することができる。
特徴クライアントは自ら製品を作るのではなく、工場で作られた製品を受け取るだけでよい。自ら製品を作るProduct p = new Product(); 工場で作ってもらう Product p = Factory.getProduct(); クライアントは工場内でどのように製品が作られるのか、意識する必要がない。Product p = Factory.getProduct();このコードを記述するクライアントでは、 Factory クラスの getProduct() メソッドがどのように実装されているか、知る必要がない。 実装
オブジェクトの生成メソッドのみをスーパークラスで実装しておき、細かい実装はサブクラスに任せる。
サンプルコード
抽象クラス Factory.java
abstract public class Factory {
// オブジェクト作成の時に呼び出されるメソッド
public final Product create(String serial){
Product pro = this.make(serial);
return pro;
}
// オブジェクトを生成するメソッド。実装はサブクラスに任せる。
abstract public Product make(String serial);
}
インタフェース Product.java
public interface Product {
abstract public void showSerialno();
}
実装クラス ToyFactory.java
public class ToyFactory extends Factory {
public Product make(String serial) {
return new Toy(serial);
}
}
実装クラス Toy.java
public class Toy implements Product{
private String serial = null;
public Toy(String serial){
this.serial = serial;
}
public void showSerialno(){
System.out.println(this.serial);
}
}
Main.java
public class Main {
public static void main(String[] args){
Factory factory = new ToyFactory();
Product robot = factory.create("robo_001");
Product car = factory.create("car_001");
robot.showSerialno();
car.showSerialno();
}
}
クラス図
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |