什麼是工廠模式?工廠模式是java常用的設計模式之一,這種模式提供了一種創建對象的方式。java是一種面向對象的語言,創建對象的方式有3種,一種是使用new關鍵字創建對象,一種是通過反射來創建對象,還有一種就是通過工廠模式來創建對象。在工廠模式中,創建對象不會對外暴露對象的創建邏輯,並且是通過一個共同的接口來指向創建的對象。
我們先來創建一個英雄接口。
public interface Hero {
public void attribute();
}
接下來再創建3個實現類,並實現接口。
class Hero1 implements Hero{
String name="蘇秦";
@Override
public void attribute() {
System.out.println(name);
System.out.println("縱橫捭闔");
}
}
class Hero2 implements Hero{
String name ="陳長生";
@Override
public void attribute() {
System.out.println(name);
System.out.println("西寧一廟治天下");
}
}
class Hero3 implements Hero{
String name="李斯";
@Override
public void attribute() {
System.out.println(name);
System.out.println("千古一相");
}
}
然後我們來創建工廠。
class Factory{
public static Hero getInstance(String name) throws InstantiationException,
IllegalAccessException, ClassNotFoundException, NoSuchMethodException, SecurityException,
IllegalArgumentException, InvocationTargetException{
Hero hero = null;
Class<?> c = null;
c=Class.forName(name);
hero=(Hero)c.newInstance();
Method method = c.getMethod("attribute");
method.invoke(hero);
return hero;
}
}
最後寫測試類,進行測試。
public class FactoryTest {
public static void main(String[] args) throws InstantiationException, IllegalAccessException,
ClassNotFoundException, NoSuchMethodException, SecurityException,
IllegalArgumentException, InvocationTargetException{
Hero hero1 = Factory.getInstance("com.chongzi.keji.other.Hero1");
Hero hero2 = Factory.getInstance("com.chongzi.keji.other.Hero2");
Hero hero3 = Factory.getInstance("com.chongzi.keji.other.Hero3");
}
}
看輸出結果:
蘇秦
縱橫捭闔
陳長生
西寧一廟治天下
李斯
千古一相
工廠模式,你懂了嗎?