J2EE社區

          茍有恒,何必三更起五更眠;
          最無益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          問大家一個多態的問題??

          Posted on 2010-01-05 20:32 xcp 閱讀(1568) 評論(5)  編輯  收藏 所屬分類: JAVA
              最近做項目的時候遇到一個問題:

              例:public static AAA parse(String dest,String ... formatRegulars) throws NullPointerException,Exception {}
              
              要求:1、我要實現formatRegulars參數是固定的從一個配置文件,枚舉,或者任何地方來固定數據源, 也就是formatRegulars來源固定。
                          2、當我們在數據源(配置文件,枚舉等)里面又新增一個數據時,不用修改parse方法里面的代碼?
              
              這肯定要用到多態!
              求高手指點:public static AAA parse(String dest,?) throws NullPointerException,Exception {} 

              小弟在線等,謝謝!


          名稱: ?4C.ESL | .↗Evon
          口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
          mail: 聯系我


          Feedback

          # re: 問大家一個多態的問題??  回復  更多評論   

          2010-01-05 22:06 by xu
          定義如下:public static AAA parse(String dest,Object object) throws NullPointerException,Exception {}


          再定義幾個工廠類,處理此方法時可以為:
          public class XXXParseProperties {
          public static AAA parse(String dest,Object object) throws NullPointerException,Exception {
          if(object instanceof xxx) {
          //TODO
          }
          }
          }

          其他情況依據上面的類照著貓畫老虎應該就可以了。

          # re: 問大家一個多態的問題??  回復  更多評論   

          2010-01-06 01:24 by xcp
          @xu
          謝了!

          # re: 問大家一個多態的問題??  回復  更多評論   

          2010-01-06 01:29 by xcp
          @xu
          我想到一種好方法
          第一、
          public enum FormatRegulars2{
          aaa("newstep"),
          bbbb("xcp"),
          ccc(new Date(System.currentTimeMillis()).toString());

          private String DateFormatRegularsStr;
          public String getDateFormatRegularsStr() {
          return DateFormatRegularsStr;
          }

          FormatRegulars2(String DateFormatRegularsStr){
          this.DateFormatRegularsStr = DateFormatRegularsStr;
          }
          }

          第二、
          public static AAA parse(String dateStr,FormatRegulars2 fr) throws NullPointerException, Exception

          第三、方法內部調用的時候
          fr.getDateFormatRegularsStr();得到想要的動態值

          第四、使用的時候
          DateUtils2.parse("c:\a.txt",FormatRegulars2.aaa);

          # re: 問大家一個多態的問題??  回復  更多評論   

          2010-01-06 10:49 by Lancelot
          太搞笑了,你直接注入想要的formatRegulars不就得了。

          而且你那個程序也有問題,你應該直接面向接口編程,聲明一個Parser接口,再去實現相應的DateParserImpl、RegularParserImpl……

          而不是寫這么一堆東西,你這個根本就不是多態。

          # re: 問大家一個多態的問題??  回復  更多評論   

          2010-01-06 11:25 by xcp
          @Lancelot
          你直接注入想要的formatRegulars不就得了。
          最開始我沒想到這,這樣幫肯定是最好的!

          直接面向接口編程,聲明一個Parser接口,再去實現相應的DateParserImpl、RegularParserImpl……
          也和上面差不多!

          寫這么一堆東西,你這個根本就不是多態
          因為最后一想肯定沒必要這樣鋪張浪費,用工廠,IOC,什么多態特性啊,直接用的枚舉來完成,我個人覺得在這個特定的需求里面挺有用得!!

          謝謝!
          主站蜘蛛池模板: 新民市| 鄱阳县| 鹤山市| 白山市| 弋阳县| 石棉县| 澎湖县| 涟源市| 绥阳县| 黔南| 高淳县| 正蓝旗| 勃利县| 涿州市| 银川市| 屏东市| 都江堰市| 印江| 宜都市| 德惠市| 彭阳县| 博爱县| 大宁县| 永昌县| 广宁县| 霸州市| 重庆市| 东海县| 丘北县| 东山县| 布拖县| 绥芬河市| 兰州市| 九台市| 崇州市| 张掖市| 探索| 五常市| 仙居县| 玉环县| 临海市|