<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

    這是剛才和一個朋友的聊天記錄,希望對大家有幫助:
    佘士東 08:41:47
    我設計一個接口,其中有些方法很類似,比如取得某個工作對象,有可能需要獲得多個,也有可能獲得其中一個,參數為工作對象的名字、名字列表。
    我是用窄接口還是寬接口好,是用一個最大功能的方法還是多個重載方法好?
    比如:
    IService
    public Worker? getWorker(String name);
    public Vector<Worker> getWorkers(final Vector<String> names);
    我是在接口約束這兩個方法還是只約束最大的那個,使所有的方法都適配為后面這個最大方法,而在接口中去掉第一個方法
    楊中科 08:51:57
    我認為還是多個重載方法好,主要是考慮方便別人使用
    ?
    楊中科 08:52:31
    順便說一句:為什么參數和返回值要用Vector?用List接口不更好嗎?
    ?
    佘士東 08:53:55
    如果適用者很有限,大概只有5個左右,實際上使用者也是提供適配功能,比如使用cs結構,web方式,wap方式,sms方式獲得接口服務的適配模塊
    佘士東 08:55:04
    我的想法是使用Vector它是異步安全的,服務可能是多線程實現的,所以使用Vector返回,不知道有沒有這個必要,有沒有這個作用
    楊中科 08:55:12
    你說的是什么意思,不太明白。你說getworker方法不是所有實現類都能實現?
    ?
    佘士東 08:56:35
    其實這個接口是夾在實現和使用這中間的,使用者實現不同類型服務的適配,實現根據項目不同所要求的業務實現不一樣,實際上這個接口是約束實現要多
    佘士東 08:58:08
    如果接口方法太多,我怕如果變更會不會陷入變更里面,因為重載多了,其中很多有重復,比如參數列表,如果需要加上用戶驗證,那就都要加,這樣所有實現都要改動一批
    楊中科 08:59:41
    “我的想法是使用Vector它是異步安全的,服務可能是多線程實現的,所以使用Vector返回,不知道有沒有這個必要,有沒有這個作用 ”,你可以將傳進來的List參數用Collections類中的syn****List方法將List搞成異步安全的,返回的時候你也可以返回Vector類型的,但是返回值要生命成List類型
    ?
    楊中科 09:00:14
    要考慮二次開發人員的易用性,大部分人還是傾向于使用List、ArrayList這樣的東西的
    ?
    楊中科 09:01:50
    “如果接口方法太多,我怕如果變更會不會陷入變更里面,因為重載多了,其中很多有重復,比如參數列表,如果需要加上用戶驗證,那就都要加,這樣所有實現都要改動一批 ”,還是那句話,不要陷入實現的漩渦中,你的接口是聲明服務用的,不要管實現,怎么實現是實現類的事情,站在二次開發人員的角度來看你必須同時提供getworker和getworkers兩個方法
    ?
    佘士東 09:01:49
    原來如此,就是說實際上還是Vector,只不過返回值使用List接口,但是如果他直接轉換成ArrayList使用會不會丟掉原來異步安全特性?因為返回值畢竟只是一個引用,可能其它地方也在用同一個引用
    楊中科 09:02:30
    不可能轉換為ArrayList的,否則運行的時候會拋ClassCastException
    ?
    佘士東 09:02:46
    但是,二次開發實際上是開發實現類,而不是服務調用類
    楊中科 09:03:24
    哦,也就是二次開發實際上是寫一個實現了你定義的接口的插件???
    ?
    佘士東 09:03:47
    對,就是這個意思
    楊中科 09:04:57
    那也最好提供這兩個接口,這樣你使用這些插件的時候也方便,你可以寫一個抽象類來實現默認的getworker方法,在getworker中調用getworkers方法,這樣二次開發人員一般只要實現getworkers方法就可以了
    ?
    佘士東 09:04:57
    但是這個插件是惟一的,使用一個Factory獲得實現
    佘士東 09:05:57
    哈哈,豁然開朗,寬接口,加上適配抽象父類,就搞定了
    楊中科 09:06:26
    接口方法是越多用起來越方便
    ?
    佘士東 09:07:10
    我只是怕在產生變更的時候,對應的實現也要改動很多,畢竟框架才是初期
    楊中科 09:08:29
    “對應的實現也要改動很多”,那就看你抽象類的實現水平的,定義接口的時候不要去想實現,只要想接口定義那些方法才夠用就可以,實現和接口不能混
    ?
    楊中科 09:09:00
    你可以用各種設計模式來保證不會發生“產生變更的時候,對應的實現也要改動很多”
    ?
    楊中科 09:09:11
    但是接口就是接口

    posted on 2007-03-13 09:18 CowNew開源團隊 閱讀(1965) 評論(10)  編輯  收藏

    評論

    # re: 關于接口的設計 2007-03-13 10:32 DoubleHeart
    public List<Worker> getWorkers(final List<String> names);


    這樣才對,這樣不管你傳進來的是ArrayList、Vector、LinkedList……
    都可以正常執行,這才是接口的真諦——實現了共性的抽象!!!  回復  更多評論
      

    # re: 關于接口的設計 2007-03-13 15:44 DoubleHeart
    而你們倆討論來討論去的,只是把接口當門面來用了!!!
    這是接口使用的誤區。  回復  更多評論
      

    # re: 關于接口的設計 2007-03-13 15:54 CowNew開源團隊
    to DoubleHeart:
    thanks,請詳細指教。  回復  更多評論
      

    # re: 關于接口的設計 2007-03-14 13:21 mars
    接口的返回值和多線程有什么關系么?你告訴別人方法是不是線程安全的不就行了,至于返回值list怎么處理,是由調用你的人來處理啊??不明白>>
      回復  更多評論
      

    # re: 關于接口的設計 2007-03-14 13:34 CowNew開源團隊
    to mars:我那個朋友的意思應該是方法返回一個線程安全的List接口對象,這樣調用者就不用考慮線程安全問題了。  回復  更多評論
      

    # re: 關于接口的設計 2007-03-15 09:02 剃刀
    樓主自己連什么叫重載都沒搞清楚.  回復  更多評論
      

    # re: 關于接口的設計 2007-03-15 09:10 CowNew開源團隊
    to 剃刀:謝謝,雖然心里知道重載和重寫的差別,但是由于上學的時候老師就把重寫說成重載,已經養成習慣了,所以經常說混,郁悶呀。  回復  更多評論
      

    # re: 關于接口的設計 2007-03-15 11:08 mars
    我個人認為返回Vector只會限制你對你接口將來的擴展,另外Vector類性能低下,你會限制客戶端提升性能,  回復  更多評論
      

    # re: 關于接口的設計 2007-03-19 14:06 StormSpire
    接口不應該不需要考慮實現的方法,是否是同步還是異步,需要調用者考慮。
    另外基本原則是接口盡量用interface, List 是interface,vector不是,所以vector做接口是不可取的  回復  更多評論
      

    # re: 關于接口的設計[未登錄] 2007-04-29 15:32 王千
    楊中科 不是我教的你面向對象吧!不要在背后說老師的壞話啊 呵呵  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 欧亚精品一区三区免费| 国产AV无码专区亚洲AWWW| 国产成人高清亚洲一区久久| 亚洲五月午夜免费在线视频| 久久亚洲免费视频| 亚洲精华国产精华精华液好用| 亚洲AV无码一区二区三区国产| 国产成人久久AV免费| 亚洲精品国产av成拍色拍| 国产AV无码专区亚洲AVJULIA| 成人免费视频一区二区三区| 国产精品综合专区中文字幕免费播放| 亚洲精品国产情侣av在线| 免费日本黄色网址| 91久久精品国产免费一区| 黄色一级免费网站| 亚洲区精品久久一区二区三区| 亚洲国产精品碰碰| 亚洲精品免费网站| 99免费在线视频| 亚洲AV无码国产精品永久一区| 亚洲AV无码乱码在线观看裸奔| 精品国产免费一区二区| 人妻无码一区二区三区免费| 老司机午夜性生免费福利| 亚洲人成激情在线播放| 久久久青草青青亚洲国产免观| 免费特级黄毛片在线成人观看| 久久久久久久岛国免费播放 | 亚洲va中文字幕无码| 手机看黄av免费网址| 国产免费无码一区二区| 日本永久免费a∨在线视频| 亚洲www在线观看| 久久亚洲私人国产精品vA| 2022中文字字幕久亚洲| 国产黄色片在线免费观看| 日韩欧毛片免费视频| 日韩精品无码一区二区三区免费| 国产精品免费观看视频| 免费国产高清毛不卡片基地|