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

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

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

    細(xì)心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書(shū),跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點(diǎn)粗墨,七八筆買(mǎi)賣(mài),九十道人情。

    BlogJava 聯(lián)系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
    Simple Factory模式(又稱(chēng)Static Factory模式),一個(gè)Simple Factory生產(chǎn)成品,而對(duì)客戶(hù)端隱藏產(chǎn)品產(chǎn)生的細(xì)節(jié)。實(shí)作時(shí)定義一個(gè)產(chǎn)品介面(interface),並透過(guò)特定靜態(tài)方法來(lái)建立成品。

    假設(shè)有一個(gè)音樂(lè)盒工廠(chǎng),購(gòu)買(mǎi)音樂(lè)盒的客人不用知道音樂(lè)盒是如何製作的,他只要知道如何播放音樂(lè)盒就可以了,以 UML 類(lèi)別圖來(lái)表示以上的概念:
    SimpleFactory
    如上圖所示的,MusicBoxDemo代表了客戶(hù)的角色,它只依賴(lài)於IMusicBox介面,而不關(guān)心特定的實(shí)作,實(shí)際如何產(chǎn)生IMusicBox的實(shí)例由MusicBoxFactory完成,以一個(gè)簡(jiǎn)單的程式來(lái)實(shí)現(xiàn)上面這個(gè)UML類(lèi)別圖:
    • IMusicBox.java
    public interface IMusicBox {
    public void play();
    }

    • PianoBox.java
    public class PianoBox implements IMusicBox {
    public void play() {
    System.out.println("撥放鋼琴音樂(lè):)");
    }
    }

    • ViolinBox.java
    public class ViolinBox implements IMusicBox {
    public void play() {
    System.out.println("撥放小提琴音樂(lè)^_^");
    }
    }

    • MusicBoxFactory.java
    public class MusicBoxFactory {
    public static IMusicBox createMusicBox(String name)
    throws InstantiationException,
    IllegalAccessException,
    ClassNotFoundException {
    // 這邊使用的是Java的Reflection機(jī)制來(lái)產(chǎn)生實(shí)例
    // 不過(guò)客戶(hù)端不用管啦
    // 以後就算改變了這邊的程式,客戶(hù)端程式是不用更改的
    return (IMusicBox) Class.forName(name).newInstance();
    }
    }

    • MusicBoxDemo.java
    public class MusicBoxDemo {
    public static void main(String[] args) throws Exception {
    playMusicBox(MusicBoxFactory.createMusicBox("PianoBox"));
    playMusicBox(MusicBoxFactory.createMusicBox("ViolinBox"));
    }

    public static void playMusicBox(IMusicBox musicBox) {
    musicBox.play();
    }
    }

    由於客戶(hù)端只依賴(lài)於IMusicBox介面,所以即使您日後改變了createMusicBox()中的實(shí)作方式,對(duì)客戶(hù)端是一點(diǎn)影響也沒(méi)有的。

    來(lái)看看Simple Factory的類(lèi)別結(jié)構(gòu):
    SimpleFactory

    客戶(hù)只要面對(duì)Factory,客戶(hù)依賴(lài)於產(chǎn)品介面,產(chǎn)品的具體實(shí)作是可以與客戶(hù)隔開(kāi)的,它們也是可以抽換的。

    posted on 2007-04-16 17:39 張金鵬 閱讀(230) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Creational 模式
    主站蜘蛛池模板: 免费午夜爽爽爽WWW视频十八禁| 中文字幕无码一区二区免费| 免费大片黄在线观看yw| 亚洲AV无码国产精品麻豆天美| 国产vA免费精品高清在线观看| 亚洲黄黄黄网站在线观看| 国产尤物在线视精品在亚洲| 免费看美女被靠到爽| 亚洲精品无码久久久久久| 永久免费视频v片www| 羞羞漫画登录页面免费| 国产精品亚洲综合专区片高清久久久| 少妇亚洲免费精品| 国产精品亚洲美女久久久| 两个人看的www免费高清| 亚洲国产精品福利片在线观看| 免费观看成人久久网免费观看| 亚洲AV日韩AV永久无码绿巨人| 91大神在线免费观看| 亚洲综合久久一本伊伊区| 在线观看免费国产视频| 成年网站免费入口在线观看| 亚洲精品乱码久久久久久中文字幕| 日韩免费在线观看视频| 亚洲精品一卡2卡3卡三卡四卡| 三年片在线观看免费大全| 国产偷国产偷亚洲清高APP| 亚洲国产中文v高清在线观看| 日本视频免费高清一本18| 亚洲最大的黄色网| 亚洲国产精品第一区二区三区| 成人自慰女黄网站免费大全| 亚洲精品自在线拍| 国产精品深夜福利免费观看| 国产精品免费久久久久久久久 | 亚洲熟妇无码AV| 亚洲最大AV网站在线观看| 1000部啪啪未满十八勿入免费| 亚洲成a人片在线观看天堂无码| 国产成人精品亚洲精品| 国产91色综合久久免费分享|