接口的定義:
package day14.factory; public interface Animal { public void eat(); }
接口的實現:
package day14.factory; public class Cat implements Animal { @Override public void eat() { System.out.println("小貓吃魚"); } } package day14.factory; public class Dog implements Animal { @Override public void eat() { System.out.println("小狗吃骨頭"); } } package day14.factory; public class Tiger implements Animal { @Override public void eat() { System.out.println("老虎吃肉"); } }
工廠:AnimalFactory
package day14.factory; public class AnimalFactory { public static Animal newInstance(String name) throws Exception{ /*if("老虎".equals(name)){ return new Tiger(); }else if("小貓".equals(name)){ return new Cat(); }else if("小狗".equals(name)){ return new Dog(); } return null;*/ Class c = Class.forName(name); Animal a = (Animal) c.newInstance(); return a; } }
工廠測試:Test
package day14.factory; public class Test { public static void main(String[] args) { Animal a; try { a = AnimalFactory.newInstance("day14.factory.Tiger"); a.eat(); } catch (Exception e) { e.printStackTrace(); } } }
結果:輸入:"day14.factory.Tiger" 則輸出:老虎吃肉