1. 程式人生 > >java設計模式(二)工廠模式

java設計模式(二)工廠模式

額外 mod 通過反射 pat 擴展 簡單實現 需要 factory actor

  工廠模式是最常見的實例化對象的模式,用來替代new操作。采用這種模式創建對象會有一些額外的操作,但他會帶給系統更大的擴展性和更少的修改量。典型的應用spring bean容器。下面簡單實現工廠的例子。

1、動物接口,提供公用方法體

public interface Animal {
    public void eat();
}

2、貓類,繼承動物接口,實現貓的eat方法

public class Cat implements Animal {
    public void eat() {
        System.out.println("貓在吃飯...");
    }
}

3、狗類,繼承動物接口,實現狗的eat方法

public class Dog implements Animal {
    public void eat() {
        System.out.println("狗在吃飯...");
    }
}

4、工廠類

  需要註意兩點:1)返回類型為接口 2)通過反射實現類的實例化

public class AnimalFactory {
    public Animal getAnimalByClassName(String className) {
        Animal a = null;
        try {
            a 
= (Animal) Class.forName(className).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }
return a; } }

5、測試類

public class Model {
    public static void main(String[] args) {
        AnimalFactory af = new AnimalFactory();
        Animal a = af.getAnimalByClassName("design_pattern.factory.Cat");
        a.eat();
        a = af.getAnimalByClassName("design_pattern.factory.Dog");
        a.eat();
    }
}

java設計模式(二)工廠模式