大漠駝鈴

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

          JAVA設計模式之-簡單工廠模式(Simplae Factory)

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

          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反射機制生成實例
          客戶端只需調用即可
          方便維護和以后程序的升級擴展
          */
          public static IMusicBox createMusicBox(String name)throws InstantiationException,IllegalAccessException,ClassNotFoundException{

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

          //在這里還可以進行一些box的內部成員變量處理


          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();

          }



          }

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


          posted on 2008-12-14 22:57 草原上的駱駝 閱讀(402) 評論(0)  編輯  收藏 所屬分類: 設計模式-DP


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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 忻城县| 龙岩市| 丹巴县| 嘉荫县| 红桥区| 鹤山市| 屏东县| 弋阳县| 北川| 永福县| 上林县| 肇源县| 孝感市| 色达县| 定边县| 佛坪县| 治多县| 广西| 阿克陶县| 安义县| 高邮市| 曲阳县| 屯留县| 高台县| 长白| 锦屏县| 固始县| 包头市| 榕江县| 深州市| 个旧市| 宁阳县| 桐庐县| 天峨县| 甘南县| 宜城市| 隆安县| 蒙自县| 布尔津县| 广宗县| 当涂县|