存在就是合理的

          會思考的僵尸

          諸葛亮與IOC的關(guān)系

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

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

          Feedback

          # re: 諸葛亮與IOC的關(guān)系 2006-07-31 11:31 f

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

          # re: 諸葛亮與IOC的關(guān)系 2006-07-31 14:04 GHawk

          這樣設(shè)計是不是更合適??

          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)
          {
          //處理業(yè)務(wù)邏輯
          System.out.println(this.obj.getUsername+"hello!");
          }
          else
          {
          //異常日志
          System.out.println("MB~~~給的什么數(shù)據(jù)啊~~我叼!")
          }
          }
          }
          ////////////////////////////////////////////////////////////////////////////////分割線////////////////////////////////////////////////////////////////////////////////////////
          /*萬事具備了,借東風(fēng)吧!*/
          public class Main
          {
          public static void main(String[]args)
          {
          //做個東風(fēng)先
          //IOCObject obj = new IOCObject ();
          IOCINTERFACE obj = new IOCObject(); //---------------依賴接口而不是類

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

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

          # re: 諸葛亮與IOC的關(guān)系 2006-07-31 15:22 KenIT

          謝謝!受教了~_~  回復(fù)  更多評論   

          # re: 諸葛亮與IOC的關(guān)系 2006-07-31 19:41 jspark

          呵呵,好!

          有意思,以前看過一篇是關(guān)于談戀愛的設(shè)計模式,也挺有趣的  回復(fù)  更多評論   


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 延吉市| 遂川县| 简阳市| 改则县| 毕节市| 烟台市| 长子县| 邓州市| 卢龙县| 汤原县| 册亨县| 乌鲁木齐市| 望城县| 紫阳县| 闻喜县| 龙井市| 芦溪县| 旌德县| 林西县| 东光县| 大厂| 乐都县| 红桥区| 凤庆县| 台山市| 将乐县| 和龙市| 双柏县| 敦化市| 渝北区| 舞钢市| 丹东市| 大足县| 如皋市| 孟津县| 琼海市| 弥渡县| 西吉县| 望奎县| 漳浦县| 闸北区|