http://www.books.com.tw/products/0010750585
chap03.
簡單工廠模式 Simple Factory
目的:定義一個簡單工廠,傳入不同的參數取得不同的類別物件。
package com.ssc24.chap03.demo01; public interface Adventurer { public String getType(); }
package com.ssc24.chap03.demo01; public class Archer implements Adventurer { @Override public String getType() { System.out.println("我是弓箭手"); return this.getClass().getSimpleName(); } }
package com.ssc24.chap03.demo01; public class Warrior implements Adventurer { @Override public String getType() { System.out.println("我是戰士"); return this.getClass().getSimpleName(); } }
package com.ssc24.chap03.demo01; public class TrainingCampFactory { public static Adventurer trainAdventurer(String type) { switch (type) { case "archer": { System.out.println("弓箭手生產完成"); return new Archer(); } case "warrior" : { System.out.println("戰士生產完成"); return new Warrior(); } default: return null; } } }
package com.ssc24.chap03.demo01; import static org.junit.Assert.*; import org.junit.Test; import junit.framework.Assert; public class VillageTest { @SuppressWarnings("deprecation") @Test public void test() { Adventurer memberA = TrainingCampFactory.trainAdventurer("archer"); Assert.assertEquals(memberA.getType(), "Archer"); Adventurer memberB = TrainingCampFactory.trainAdventurer("warrior"); Assert.assertEquals(memberB.getType(), "Warrior"); } }
/** ===簡單工廠模式測試=== 弓箭手生產完成 我是弓箭手 戰士生產完成 我是戰士 **/