產品接口:
package com.ajax.pattern.factorymethod; public interface Fruit { void desc(); }
產品1:
package com.ajax.pattern.factorymethod; public class Apple implements Fruit { @Override public void desc() { System.out.println("蘋果"); } }
產品2:
package com.ajax.pattern.factorymethod; public class Orange implements Fruit { @Override public void desc() { System.out.println("橙子"); } }
工廠接口:
package com.ajax.pattern.factorymethod; public interface FruitFactory { Fruit getFruit(); }
產品1工廠:
package com.ajax.pattern.factorymethod; public class AppleFactory implements FruitFactory { @Override public Fruit getFruit() { return new Apple(); } }
產品2工廠:
package com.ajax.pattern.factorymethod; public class OrangeFactory implements FruitFactory { @Override public Fruit getFruit() { return new Orange(); } }
運行:
package com.ajax.pattern.factorymethod; public class Run { public static void main(String[] args) { Fruit fruit1 = new AppleFactory().getFruit(); fruit1.desc(); Fruit fruit2 = new OrangeFactory().getFruit(); fruit2.desc(); } }