隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156401
          • 排名 - 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 天堂露珠 閱讀(1074) 評論(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
          不錯。  回復  更多評論
            
          主站蜘蛛池模板: 长海县| 彭州市| 卢氏县| 乐亭县| 宜春市| 隆化县| 中超| 青龙| 麦盖提县| 绥棱县| 乌什县| 叙永县| 蒙山县| 杨浦区| 砚山县| 文山县| 高台县| 同江市| 邯郸市| 北安市| 隆尧县| 寻甸| 新津县| 襄城县| 祁门县| 杨浦区| 青河县| 屯留县| 新闻| 阿坝| 红安县| 桑植县| 剑阁县| 连城县| 兴城市| 仁怀市| 郁南县| 明溪县| 始兴县| 女性| 左云县|