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");
}
} /** ===簡單工廠模式測試=== 弓箭手生產完成 我是弓箭手 戰士生產完成 我是戰士 **/