大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務(wù)器運(yùn)維,大數(shù)據(jù),SEO, 網(wǎng)站開發(fā)、運(yùn)維,云服務(wù)技術(shù)支持,IM服務(wù)供應(yīng)商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評(píng)論 - 117, 引用 - 0
          數(shù)據(jù)加載中……

          JAVA設(shè)計(jì)模式之-簡(jiǎn)單工廠模式(Simplae Factory)

          Factory method(工廠方法)是實(shí)例化對(duì)象的一種方法的名稱。就象工廠一樣,F(xiàn)actory method的任務(wù)是創(chuàng)建--或制造--對(duì)象。
          下面對(duì)工廠模式進(jìn)行簡(jiǎn)單的講解:
          從音樂盒開始講起,音樂盒工廠(MusicBoxFactory)生產(chǎn)音樂盒(PianoBox和ViolinBox),當(dāng)然還可以是其它的音樂盒,這些具體的音樂盒展現(xiàn)給客戶(MusicBoxDemo)只是一個(gè)界面(IMusicBox),客戶不需要知道音樂盒的具體實(shí)現(xiàn)功能,只要能play()就OK。
          如下圖所示:客戶(MusicBoxDemo)依賴音樂盒的界面,而不必知道音樂盒是如何通過音樂盒工廠(MusicBoxFactory)生產(chǎn)的。
          從下面的圖我們進(jìn)入簡(jiǎn)單的代碼演示階段:

          IMusicBox.java
          public interface IMusicBox{
          public void play();

          }
          PianoBox.java
          public class PinoBox implements IMusicBox{
          public void play(){

          System.out.println(
          "播放鋼琴音樂");
          }
          }

          ViolinBox.java
          public class ViolinBox implements IMusicBox{
          public void play(){

          System.out.println(
          "播放小提琴音樂");
          }
          }
          MusicBoxFactory.java
          public class MusicBoxFactory{
          /***
          使用java反射機(jī)制生成實(shí)例
          客戶端只需調(diào)用即可
          方便維護(hù)和以后程序的升級(jí)擴(kuò)展
          */
          public static IMusicBox createMusicBox(String name)throws InstantiationException,IllegalAccessException,ClassNotFoundException{

          IMusicBox musicbox
          =(IMusicBox)Class.forName(name).newInstance();

          //在這里還可以進(jìn)行一些box的內(nèi)部成員變量處理


          return musicbox;

          }


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


          }

          public static void PlayMusicBox(IMusicBox imusicbox){

          imusicbox.play();

          }



          }

          這樣客戶只需要知道音樂的界面即可,不需要知道如何生產(chǎn)的音樂盒。即使以后修改了Factory的生產(chǎn)模式,用戶這里也是毫不影響。


          posted on 2008-12-14 22:57 草原上的駱駝 閱讀(407) 評(píng)論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)模式-DP


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 丹凤县| 沾益县| 无为县| 寻甸| 叙永县| 东台市| 邯郸市| 正蓝旗| 开原市| 武夷山市| 河南省| 伊吾县| 航空| 马关县| 咸宁市| 和平县| 新龙县| 全州县| 玉林市| 泰来县| 辛集市| 沙湾县| 百色市| 惠东县| 望奎县| 循化| 武川县| 盐源县| 郑州市| 曲水县| 盐城市| 龙州县| 多伦县| 临沭县| 德钦县| 和静县| 东乡族自治县| 黄龙县| 青冈县| 建德市| 巴林左旗|