<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    laoding
    本來我以為,隱身了別人就找不到我,沒有用的,像我這樣拉風的男人,無論走到哪里,都像在黑暗中的螢火蟲一樣,那樣的鮮明,那樣的出眾。我那憂郁的眼神,稀疏的胡茬,那微微隆起的將軍肚和親切的笑容......都深深吸引了眾人......
    posts - 0,  comments - 37,  trackbacks - 0

    本實例需要根據植物園的種類確定植物園的布局, 而植物園的種類有很多,對應的植物園布局也各不相同。在這里假設有3種植物園:蔬菜園,一年生植物園,多年生植物園。這3garden中種植的植物各不相同,體現在程序中即返回不同的關于“植物園布局”的對象。生成植物園的布局是我們的目的,如果把蔬菜園、一年生植物園、多年生植物園看作是3個“產品族”,而某一時刻只需要其中一個產品族。由于每個產品族需要一個生產的工廠,所以生產這3個產品族需要3個工廠,分別是蔬菜園工廠(VegieGarden.java),一年生植物園工廠(AnnualGarden.java),多年生植物園工廠(PerennialGarden.java)。由于這3個工廠都是生產植物園的工廠,每個工廠生產的產品又基本相同(都生產“中心布局”、“邊沿布局”、“陰處布局”3個產品),所以可以抽象一個工廠類(Garden.java),這個工廠類也具備生產“中心布局”、“邊沿布局”和“陰處布局”3個產品的能力,而生產的方法由具體的工廠來實現。這樣,再通過一個總控程序(GardenMaker.java)(這個總控程序也可以放到抽象的工廠中)指定需要調用的具體工廠。

    首先來創建Plant.java類,它只有一個name屬性

    public class Plant {
        String name;

        
    public Plant(String name) {        
            
    this.name = name;
        }

        
    public String getName() {
            
    return name;
        }
    }


    然后是Garden類,3個方法分別是得到中心處、邊沿處和陰暗處的植物

    public abstract class Garden {
        
    public abstract Plant getCenter();
        
    public abstract Plant getBorder();
        
    public abstract Plant getShade();
    }

    下面是3個工廠類
    /**
     * 一年生植物園工廠
     * 
    @author Heinvo Lee
     *
     
    */
    public class AnnualGarden extends Garden {

        @Override
        
    public Plant getCenter() {
            
    // TODO Auto-generated method stub
            return new Plant("Marigold");//萬壽菊
        }
        
        @Override
        
    public Plant getBorder() {
            
    // TODO Auto-generated method stub
            return new Plant("Alyssum");//十字花科植物;庭薺
        }

        @Override
        
    public Plant getShade() {
            
    // TODO Auto-generated method stub
            return new Plant("Coleus");//薄荷科植物
        }

    }

    /**
     * 常年生植物園工廠
     * 
    @author Heinvo Lee
     *
     
    */
    public class PerennialGarden extends Garden {



        @Override
        
    public Plant getCenter() {
            
    // TODO Auto-generated method stub
            return new Plant("Dicentrum");
        }
        
        @Override
        
    public Plant getBorder() {
            
    // TODO Auto-generated method stub
            return new Plant("Sedum");//景天屬植物;八寶
        }

        @Override
        
    public Plant getShade() {
            
    // TODO Auto-generated method stub
            return new Plant("Astilbe");//落新婦屬植物
        }

    }

    /**
     * 蔬菜園工廠
     * 
    @author Heinvo Lee
     *
     
    */
    public class VegieGarden extends Garden {

        
    public Plant getCenter() {
            
    return new Plant("Corn");
            }
        
    public Plant getBorder() {
            
    return new Plant("Peas");
            }
        
        
    public Plant getShade() {        
            
    return new Plant("Broccoli");//花椰菜
            }

    }

    接下來創建總控類GardenMaker
    public class GardenMaker {
        
    private Garden garden;
        
    public Garden getGarden(String gtype)
        {
            garden 
    = new VegieGarden(); //default
        if(gtype.equals("Perennial"))
            garden 
    = new PerennialGarden();
        
    if(gtype.equals("Annual"))
            garden 
    = new AnnualGarden();
        
    return garden;
        }
    }

    然后是一個測試類了
    public class Main {

        
    /**
         * 
    @param args
         
    */
        
    public static void main(String[] args) {
            GardenMaker gm
    =new GardenMaker();
            Garden vg
    =gm.getGarden("Vegie");
            Garden ag
    =gm.getGarden("Annual");
            Garden pg
    =gm.getGarden("Perennial");
            
            System.out.println(
    "Vegie garden, center: "+vg.getCenter().getName());
            System.out.println(
    "Vegie garden, border: "+vg.getBorder().getName());
            System.out.println(
    "Vegie garden, shade: "+vg.getShade().getName());
            System.out.println(
    "------------------------------------");
            System.out.println(
    "Annual garden, center: "+ag.getCenter().getName());
            System.out.println(
    "Annual garden, border: "+ag.getBorder().getName());
            System.out.println(
    "Annual garden, shade: "+ag.getShade().getName());
            System.out.println(
    "------------------------------------");
            System.out.println(
    "Perennial garden, center: "+pg.getCenter().getName());
            System.out.println(
    "Perennial garden, border: "+pg.getBorder().getName());
            System.out.println(
    "Perennial garden, shade: "+pg.getShade().getName());
            
            
    // TODO Auto-generated method stub

        }

    }

    執行這個測試類,可以在控制臺看到以下效果(我以紅色標紅)

    Vegie garden, center: Corn
    Vegie garden, border: Peas
    Vegie garden, shade: Broccoli
    ------------------------------------
    Annual garden, center: Marigold
    Annual garden, border: Alyssum
    Annual garden, shade: Coleus
    ------------------------------------
    Perennial garden, center: Dicentrum
    Perennial garden, border: Sedum
    Perennial garden, shade: Astilbe

    從這個例子我看出以下:
      GardenMaker gm=new GardenMaker();
      Garden vg=gm.getGarden("Vegie");
      Garden ag=gm.getGarden("Annual");
      Garden pg=gm.getGarden("Perennial");
    上面4句代碼是測試類里面的

    當需要生產某一種植物園的布局時,只需要將植物園的類型告訴總控程序(GardenMaker.java),這里是傳入參數Vegie、Annual、Perennial,總控程序決定使用生產指定類型植物園的工廠生產出需要的“產品族”,而在此過程中,不需要了解具體工廠中的方法是如何實現的。
    posted on 2009-10-14 14:45 老丁 閱讀(351) 評論(0)  編輯  收藏 所屬分類: 設計模式

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    本博客主為學習和復習之用,無關其他,想罵人的繞道
    Email:dkm123456@126.com
    大家一起交流進步
    QQ:283582761


    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96425
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 中文字幕亚洲情99在线| 免费国产在线精品一区| 免费无码一区二区三区蜜桃大| a级毛片在线视频免费观看| 久久精品国产亚洲AV麻豆王友容| 亚洲一级免费毛片| 免费a在线观看播放| 久久国产高潮流白浆免费观看| 中文字幕在亚洲第一在线 | 区三区激情福利综合中文字幕在线一区亚洲视频1 | 一区二区三区在线免费看| 亚洲国产精品白丝在线观看| 在线观看亚洲免费| 久久青草免费91线频观看站街| 亚洲精品无码久久一线| 曰批全过程免费视频在线观看| 亚洲欧洲日韩不卡| 免费a级毛片永久免费| 四虎影视成人永久免费观看视频| 亚洲乱码日产一区三区| 麻豆国产精品入口免费观看| 成全视频免费观看在线看| 亚洲中文字幕无码久久| 亚洲第一AV网站| 高清在线亚洲精品国产二区| 国产人成免费视频网站| 国产免费高清69式视频在线观看| 伊人久久综在合线亚洲91| 成人无遮挡裸免费视频在线观看 | 99久久亚洲精品无码毛片| 免费黄网在线观看| 99re免费在线视频| 美女无遮挡拍拍拍免费视频| 亚洲乱妇老熟女爽到高潮的片| 国产成人综合久久精品免费| 亚洲国产精品免费在线观看| 九九热久久免费视频| 日韩精品无码免费视频| 国产午夜亚洲精品| 亚洲美女精品视频| 久久亚洲私人国产精品|