存在就是合理的

          會思考的僵尸

          諸葛亮與IOC的關系

          看過三國志的朋友都知道一句名言:萬事具備,只欠東風.
          最近在學習SPRING框架的時候對此又有了深層的理解.
          最近開發一個幾百人的大項目,由于某些因素,不能使用開源框架.我們開發人員商議,準備順應潮流,使用SPRING框架的某些設計思想來完成工作.
          由于大家都沒有幾百人一起工作的項目經驗,所以開始階段是痛苦而沒有成效的.特別在商議相互調用的接口時,簡直成了討價還價的菜市場(每個人的想法,水平,及設計能力的差異).~_~!!!
          百無聊賴中,跑去開三國(你們吵你們的吧,我休息先),看到諸葛亮借東風一節,突然靈機一動,這不就是SPRING框架的IOC思想么??我先萬事具備再說,只欠東風就OK!想到這里,心中竊喜,于是將需要的接口數據整理出來寫了個XML文檔,并用DTD定義,直接扔給調用我的家伙,想用我的接口么??我就要這些數據,你看著辦吧~~!
          于是不管他渴求的表情,自己工作去也.那個心里爽啊~
          下面是一些模擬代碼,希望能有用:
          /*定義依賴注入的數據接口*/
          public interface IOCINTERFACE
          {
          ???//只定義一個驗證方法,驗證DTD定義的數據
          ???public boolean validate();
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          /**/
          class IOCObject implement IOCINTERFACE
          {
          ???//需要注入的數據
          ???private String username;
          ???public void setUsername(String username)
          ???{
          ??????this.username = username;
          ???}
          ???public String getUsername()
          ???{
          ??????return this.username?;
          ???}
          ???//驗證一下是否是我要的數據
          ???public boolean validate()
          ???{
          ??????if(this.username = null)
          ??????{
          ?????????return false;
          ??????}
          ??????return true;
          ???}
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          /*再定義一個執行接口*/
          public interface OPERATION
          {
          ???public void execute();
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          class Test implement OPERATION
          {
          ???//定義操作對象
          ???private IOCObject obj;
          ???public void Test( IOCObject obj)
          ???{
          ??????this.obj = obj;
          ???}
          ???public void execute()
          ???{
          ??????if(this.obj.validate)
          ??????{
          ?????????//處理業務邏輯
          ?????????System.out.println(this.obj.getUsername+"hello!");
          ??????}
          ??????else
          ??????{
          ?????????//異常日志
          ????????????System.out.println("MB~~~給的什么數據啊~~我叼!")
          ??????}
          ???}
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          /*萬事具備了,借東風吧!*/
          public class Main
          {
          ???public static void main(String[]args)
          ???{
          ??????//做個東風先
          ??????IOCObject?obj = new IOCObject?();
          ??????obj?.setUsername("KenIT");
          ??????//依賴注入了,高興啊!
          ??????Test?test = new Test(ob);
          ??????//完成工作,打完收功
          ??????test.execute();
          ???}
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          回想來發現IOC就是我們的諸葛老前輩發明的,居然.....,我強烈呼吁收版權稅.
          中華民族萬歲~~~!

          posted on 2006-07-31 11:22 KanIT 閱讀(974) 評論(4)  編輯  收藏

          Feedback

          # re: 諸葛亮與IOC的關系 2006-07-31 11:31 f

          兄弟挺搞笑的,不錯,呵呵!  回復  更多評論   

          # re: 諸葛亮與IOC的關系 2006-07-31 14:04 GHawk

          這樣設計是不是更合適??

          class Test implement OPERATION
          {
          //定義操作對象
          //private IOCObject obj;
          private IOCINTERFACE obj; //---------------依賴接口而不是類
          //public void Test( IOCObject obj)
          public Test(IOCINTERFACE obj) //---------------依賴接口而不是類
          {
          this.obj = obj;
          }
          public void execute()
          {
          if(this.obj.validate)
          {
          //處理業務邏輯
          System.out.println(this.obj.getUsername+"hello!");
          }
          else
          {
          //異常日志
          System.out.println("MB~~~給的什么數據啊~~我叼!")
          }
          }
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          /*萬事具備了,借東風吧!*/
          public class Main
          {
          public static void main(String[]args)
          {
          //做個東風先
          //IOCObject obj = new IOCObject ();
          IOCINTERFACE obj = new IOCObject(); //---------------依賴接口而不是類

          obj .setUsername("KenIT");
          //依賴注入了,高興啊!
          Test test = new Test(ob);
          //完成工作,打完收功
          test.execute();
          }
          }

          另外,由接口的實現者來決定接口上的參數,再扔給接口的消費者,未免霸道了些吧,不是很符合DIP。
            回復  更多評論   

          # re: 諸葛亮與IOC的關系 2006-07-31 15:22 KenIT

          謝謝!受教了~_~  回復  更多評論   

          # re: 諸葛亮與IOC的關系 2006-07-31 19:41 jspark

          呵呵,好!

          有意思,以前看過一篇是關于談戀愛的設計模式,也挺有趣的  回復  更多評論   


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


          網站導航:
           
          主站蜘蛛池模板: 屏山县| 上栗县| 宜宾县| 左权县| 印江| 汨罗市| 广灵县| 德安县| 宜宾市| 巩留县| 浦城县| 柳江县| 兴宁市| 夏邑县| 浠水县| 茂名市| 汤阴县| 瑞安市| 江山市| 景谷| 内江市| 沙洋县| 横峰县| 常山县| 隆尧县| 株洲县| 南皮县| 措美县| 舟山市| 定边县| 姜堰市| 黄平县| 南和县| 临高县| 岱山县| 武冈市| 宁明县| 宁强县| 响水县| 满洲里市| 嘉定区|