public interface AnaimalProduce { public void move(); }
public class FlyAnamial implements AnaimalProduce {
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("這類動物天上飛");
}
}
public class WalkAnamial implements AnaimalProduce {
@Override
public void move() {
System.out.println("這類動物在地上走");
}
}
public abstract class Factory {
public abstract <T extends AnaimalProduce> T createAnamial(Class<T> className);
}
實際工廠 concreteFactory 類
public class ConcreteFactory extends Factory { @SuppressWarnings("unchecked") @Override public <T extends AnaimalProduce> T createAnamial(Class<T> className) { // TODO Auto-generated method stub T anamial = null; try { anamial = (T) Class.forName(className.getName()).newInstance(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return anamial; } }
最後我們寫一個測試類測試一下
/*
* 工廠模式測試類
*/
public class FactoryTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Factory factory = new ConcreteFactory();
AnaimalProduce anamial1 = factory.createAnamial(WalkAnamial.class);
AnaimalProduce anamial2 = factory.createAnamial(FlyAnamial.class);
anamial1.move();
anamial2.move();
}
}
這類動物天上飛