工廠模式

chyx413332087 13年前發布 | 1K 次閱讀
  工廠模式:看字面意思,工廠是負責批量生產產品,轉化為程序那么就是  一個工廠類,調用某個方法,就能批量產生你想要的對象 。  工廠生產東西,肯定先要作一個基礎模子,對應我們程序的interface,然后按照模子批量生產各種不同的物品,這就是程序中實現接口,但是產品線是不要動的哦
    好吧,看代碼: 我們批量生產蘋果
    //統一的模子
    public interface Apple {
      public String getName();
    }
 
//白色的蘋果,具體的模子
public class BlankApple implements Apple {
 /**  
  * @Function: BlankApple.java
  * @Description: 該函數的功能描述
  *
  * @return
  * @return:返回結果描述
  * @throws:異常描述
  *
  * @version: v1.0.0
  * @author: 浪子
  * @date: 2011-8-30 下午02:55:44
  *
  * Modification History:
  * Date         Author          Version            Description
  *---------------------------------------------------------*
  * 2011-8-30     浪子           v1.0.0               修改原因
  */
 public String getName() {
  System.out.println("我是白色蘋果");
  return "";
 }
}
 
   public class RedApple implements Apple {
 /**  
  * @Function: RedApple.java
  * @Description: 該函數的功能描述
  *
  * @return
  * @return:返回結果描述
  * @throws:異常描述
  *
  * @version: v1.0.0
  * @author: 浪子
  * @date: 2011-8-30 下午02:55:04
  *
  * Modification History:
  * Date         Author          Version            Description
  *---------------------------------------------------------*
  * 2011-8-30     浪子           v1.0.0               修改原因
  */
 public String getName() {
 
  System.out.println("我是紅色蘋果");
  return "";
 }
}
  

public class AppleFactory {

 
 private static HashMap hashMap=new HashMap();
 
 
 /**
  *
 * @Function: AppleFactory.java
 * @Description: 創建蘋果物品的方法
 *
 * @return
 * @return:返回結果描述
 * @throws:異常描述
 *
 * @version: v1.0.0
 * @author: 浪子
 * @date: 2011-8-30 下午02:57:01
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2011-8-30     浪子           v1.0.0               修改原因
  */
 public static Apple createApple(Class c)  throws Exception
 {
   System.out.println(c.getPackage().getName());
    Apple apple=(Apple)c.newInstance();   //通過工廠創建出蘋果
   return apple;  
 }
 
 
 
 /**
  *
 * @Function: AppleFactory.java
 * @Description: 工廠模式的具體應用,初始化延值
 *
 * @param c
 * @return
 * @throws Exception
 * @return:返回結果描述
 * @throws:異常描述
 *
 * @version: v1.0.0
 * @author: 浪子
 * @date: 2011-8-30 下午03:25:32
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2011-8-30     浪子           v1.0.0               修改原因
  */
 public static Apple createAppleInitLazy(Class c) throws Exception
 {

 

//這個工廠,也算是應用緩存,可以在啟動的時候,把一些耗資源的先連接上,放在Map里,整個應用保存,算是一個具體應該,通過這個就能獲取自己想要的對象實例
  if(hashMap.containsKey(c.getName()))
   return (Apple)hashMap.get(c.getName());  
  else
  {
   Apple apple=(Apple)c.newInstance();
   
   hashMap.put(c.getName(), apple); 
   return apple;
   
  } 
 } 
 /**  
  * @Function: AppleFactory.java
  * @Description: 該函數的功能描述
  *
  * @param args
  * @return:返回結果描述
  * @throws:異常描述
  *
  * @version: v1.0.0
  * @author: 浪子
  * @date: 2011-8-30 下午02:50:31
  *
  * Modification History:
  * Date         Author          Version            Description
  *---------------------------------------------------------*
  * 2011-8-30     浪子           v1.0.0               修改原因
  */
 public static void main(String[] args) throws Exception {
//下面是測試

  Apple redApple= AppleFactory.createApple(RedApple.class);
  redApple.getName();
  
  Apple blankApple=AppleFactory.createApple(BlankApple.class);
  blankApple.getName();
  
  //Apple apple=AppleFactory.createApple(Apple.class);
  //apple.getName();
  
 }

}

后面還可以加上抽象類工廠,
思想:定義接口工廠,抽象類工廠繼續接口工廠,再實例化工廠類,這樣就可以創建不同的實現工廠類特性,還需定義個枚舉
    
   
 本文由用戶 chyx413332087 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!