<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

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

    首先來創(chuàng)建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");//花椰菜
            }

    }

    接下來創(chuàng)建總控類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

        }

    }

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

    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句代碼是測試類里面的

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

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


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


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

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96426
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 亚洲老熟女五十路老熟女bbw| 亚洲黄色免费网站| 国产精品亚洲综合久久| 亚洲免费在线观看视频| 亚洲国产福利精品一区二区| 最近最新高清免费中文字幕 | 国产精品亚洲成在人线| 一级毛片免费视频网站| 狠狠色婷婷狠狠狠亚洲综合| 国产99精品一区二区三区免费| 国产亚洲精品无码拍拍拍色欲| 男女一边桶一边摸一边脱视频免费| 爱情岛论坛网亚洲品质自拍| 丝袜足液精子免费视频| 麻豆亚洲AV永久无码精品久久| 免费视频专区一国产盗摄| 亚洲欧美日韩中文二区| 四虎永久免费地址在线网站| 一级毛片一级毛片免费毛片| 亚洲AV永久无码精品| 四虎在线免费视频| 国产精品亚洲专区无码WEB| 亚洲第一网站男人都懂| 日韩a级无码免费视频| 亚洲精品电影天堂网| 午夜a级成人免费毛片| 一个人免费播放在线视频看片| 亚洲精品国产成人专区| 日韩免费a级毛片无码a∨| 国产精品亚洲lv粉色| 亚洲天堂中文字幕在线| 99爱在线观看免费完整版| 亚洲熟妇AV一区二区三区宅男| 亚洲精品成人在线| 永久免费视频网站在线观看| 亚洲欧好州第一的日产suv| 亚洲开心婷婷中文字幕| 成年在线网站免费观看无广告 | 久久久久久毛片免费播放| 亚洲欧美国产欧美色欲| 亚洲男人的天堂www|