設計模式__工廠模式

簡單工廠模式

 簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern,是通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

 

簡單工廠模式的核心思想就是:有一個專門的類來負責創建實例的過程。

 

好處:創建對象由工廠類去創建,當我們要加入對象時,採用這種方法很方便,而不用去改太多代碼。

 

工廠模式的UML

 

 

下面還是看實例吧!

食品店,客人在食品店拿着菜單可以點不同的菜。

這裏 菜單就相當於一個工廠類,去產生客人所點的食品

這裏抽象類就是指食品,食品就包含了所有的食品

具體實現類就是去完成抽象類,具體產生食品的做法。

  package factory;
  
  //抽象類A 所有食品的超類,具體食品類須要實現這個類的方法
  interface Food {
  	void method();	//製作某個食品的方法
  }
  
  //具體實現類A
  class Bread implements Food
  {
  	//產生一個麪包
  	public void method()
  	{
  		System.out.println("你點了一個麪包");
  	}
  }
  //具體實現類B
  class Chicken implements Food
  {
  	//產生一個雞翅
  	public void method()
  	{
  		System.out.println("你點了一對雞翅");
  	}
  }
  //具體實現類C
  class Cola implements Food
  {
  	//產生一個可樂
  	public void method()
  	{
  		System.out.println("你點了一份可樂");
  	}
  }
  /*
   * 如果我們想加入其它的食品,
   * 在這裏直接編寫一個類,去實現Food即可,大大減少了代碼的修改
   * class ... 
  */
  
  //工廠類,用於產生對象
  class Factory
  {
  // 因爲產生其子類,所以返回其超類。
  	static Food getFood(int n)  
  	{
  		if(n==1)
  			return new Bread();  // 通過反射 Bread.class.newInstance();這個得解決異常
  		else if(n==2)
  			return new Chicken();
  		else if(n==3)
  			return new Cola();
  		return null;
  	}
  }
  
  //客戶端
  class SimpleFactoryText
  {
  	public static void main(String [] args) throws Exception
  	{
  		//通過工廠類建立對象
  		Food f = Factory.class.newInstance().getFood(1);  //  Food f = Factory.getFood(1);
  		f.method();
  		
  		Food f2 = Factory.class.newInstance().getFood(2);
  		f2.method();
  		
  		Food f3 = Factory.class.newInstance().getFood(3);
  		f3.method();
  		
  	}
  }


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