簡單factory 小例子

接口的定義:

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" 則輸出:老虎吃肉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章