隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

          常用鏈接

          常用設置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 155795
          • 排名 - 390

          最新評論

          [關鍵字]:java,設計模式,簡單工廠,《java與模式》
          [環境]:StarUML + JDK6
          [作者]:Winty (wintys@gmail.com)
              簡單工廠模式:

              代碼:
          /**
           *簡單工廠測試
           *@version 2009-3-25
           *@author Winty(wintys@gmail.com)
           */
          package pattern.simplefactory;

          public class SimpleFactory{
              public static void main(String[] args){
                  Shape shape;

                  try{
                      shape = ArtTracer.factory("circle");
                      shape.draw();
                      shape.erase();

                      shape = ArtTracer.factory("square");
                      shape.draw();
                      shape.erase();

                      shape = ArtTracer.factory("triangle");
                      shape.draw();
                      shape.erase();

                      //未知圖形類型
                      shape = ArtTracer.factory("unknownShape");
                      shape.draw();
                      shape.erase();
                  }catch(BadShapeException e){
                      System.out.println(e.getMessage());
                  }
              }
          }

          /**
           *簡單工廠:繪圖員
           */
          class ArtTracer{
              public static Shape factory(String type)throws BadShapeException{
                  if(type.equalsIgnoreCase("Circle")){
                      return new Circle();
                  }else if(type.equalsIgnoreCase("Square")){
                      return new Square();
                  }else if(type.equalsIgnoreCase("Triangle")){
                      return new Triangle();
                  }else{
                      throw new BadShapeException(type);
                  }
              }
          }

          /**
           *抽象產品
           */
          abstract class Shape{
              public abstract void draw();
              public abstract void erase();
          }

          /**
           *具體產品
           */
          class Circle extends Shape{
             
              public void draw(){
                  System.out.println("Circle draw");
              }

             
              public void erase(){
                  System.out.println("Circle erase");
              }
          }

          /**
           *具體產品
           */
          class Square extends Shape{
             
              public void draw(){
                  System.out.println("Square draw");
              }

             
              public void erase(){
                  System.out.println("Square erase");
              }
          }

          /**
           *具體產品
           */
          class Triangle extends Shape{
             
              public void draw(){
                  System.out.println("Triangle draw");
              }

             
              public void erase(){
                  System.out.println("Triangle erase");
              }
          }

          /**
           *輔助類:當輸入的類為不支持的圖形時,拋出異常
           */
          class BadShapeException extends Exception{
              public BadShapeException(String type){
                  super(type + ":不支持的圖形");
              }
          }
          posted on 2009-04-14 12:26 天堂露珠 閱讀(1071) 評論(2)  編輯  收藏 所屬分類: Pattern

          FeedBack:
          # re: [原]簡單工廠模式 2009-04-14 17:55 YXY
          加上動態加載可以使工廠模式更有彈性:

          class Factory {
          public static Fruit getFruit(String className) {
          Fruit f = null;
          try {
          f = (Fruit) Class.forName(className).newInstance();
          } catch (Exception e) {
          e.printStackTrace();
          }
          return f;
          }
          }
            回復  更多評論
            
          # re: [原]簡單工廠模式 2009-04-14 18:58 天堂露珠
          @YXY
          不錯。  回復  更多評論
            
          主站蜘蛛池模板: 泰顺县| 沂南县| 诏安县| 建昌县| 陆河县| 德江县| 察隅县| 涿鹿县| 农安县| 蓝田县| 象州县| 广饶县| 辽阳市| 东源县| 乌兰察布市| 交城县| 五指山市| 罗田县| 房产| 社旗县| 绿春县| 贵德县| 连南| 安福县| 射洪县| 错那县| 贺兰县| 科尔| 南和县| 寿阳县| 霞浦县| 高邮市| 南昌市| 榆社县| 泾源县| 万盛区| 青岛市| 苗栗市| 灵宝市| 成安县| 小金县|