1.1_簡單工廠模式

1.簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法模式。
它的實現方式是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類(這些產品類繼承自一個父類或接口)的實例。
2.簡單工廠模式由三種角色組成: 
1)工廠角色:簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,創建所需的產品對象。
2)抽象產品角色:簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。 
3)具體產品角色:是簡單工廠模式的創建目標,所有創建的對象都是充當這個角色的某個具體類的實例。
例如以下實例:生產水果,此時,爲水果類聲明瞭一個接口:
package co.xiaowenzi.study;
public interface Fruit {
   // 送給客戶
   void send();
}
 
定義水果種類:蘋果和香蕉
package co.xiaowenzi.study;
public class Apple implements Fruit {
   @Override
   public void send() {
      System.out.println("蘋果準備好了");
   }
}
 
package co.xiaowenzi.study;
public class Banana implements Fruit {
   @Override
   public void send() {
      System.out.println("香蕉準備好了");
   }
}
 
根據需求生產的工廠:
package co.xiaowenzi.study;
public class FruitFactory {
   /**
    * 水果工廠,等待客戶下單進行生產
    * @param which
    * @return
    * @throwsException
    */
   public static Fruit factory(String which) {
      // 利用反射來知道那種水果
      Fruit fruit = null;
      try {
         fruit = (Fruit) Class.forName("co.xiaowenzi.study." + which).newInstance();
      } catch (InstantiationException e) {
         //e.printStackTrace();
      } catch (IllegalAccessException e) {
         //e.printStackTrace();
      } catch (ClassNotFoundException e) {
         //e.printStackTrace();
      }
      returnfruit;
   }
}
 
客戶下單,通知工廠生產:
package co.xiaowenzi.study;
public class FruitCustomer {
   @SuppressWarnings("static-access")
   public static void main(String[] args){
      //客戶下單香蕉,通知工廠生產
      FruitFactory fruitFactory = new FruitFactory();
      Fruit fruit = fruitFactory.factory("canana");
      if(fruit!=null){
         fruit.send();
      }else{
         System.out.println("沒有這種水果");
      }
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章