設計模式之工廠模式

    什麼是工廠模式?工廠模式是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");
		
	}
}

看輸出結果:

蘇秦
縱橫捭闔
陳長生
西寧一廟治天下
李斯
千古一相

工廠模式,你懂了嗎?

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