Re: [問題] 語法(架構)的問題

看板java作者 (sbr)時間16年前 (2009/03/06 23:00), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/6 (看更多)
※ 引述《TonyQ (沉默是金)》之銘言: : 這個問題的另一種問法應該是這樣的 , : 為什麼是用 Collections 提供 sort method , : 而不是由 AbstractCollection (List/Set 的父類別) 直接寫一個sort method. : 這個問題在我的理解 , : 其實是 util (算是外部擴充吧,不太會翻.) 跟 original 的差異 , : 從原本的問題來看 , 這個問題可以從幾個方向下去著手 , : 1. 繼承 AbstractCollection 的類別有規定一定需要排序嗎? : 基本上我們在探討的項目是當有 coder 試圖擴充類別時 , : 是否需要進行這個項目 , 當然我們可以強迫性的要求 , : 但是這樣做的結果往往只是讓寫子class變得又複雜又限制重重. : 2. 如果有需要排序的情形 , 排序的行為是如何進行 : 如果排序這個功能是依照各子類別而會有所不同的話 , : 就可能會影響要實作的方式. : 不過在這個例子中排序的行為不需要考慮 , : 因為實際上是交給 Collection 中的成員實做 sortable 來作排序依據, : 並且提供 Comparator 的方式來作排序行為擴充. : 3. 目前的環境條件限制. : 有時候基於向下相容以及環境條件的考量(像是用別人的lib等) , : 我們會盡量避免修改(或甚至是無法修改) 現有的class定義 , : 這時候我們也會傾向於撰寫 util class. : 我並不曉得當初原始設計者的想法 , 不過 Collections 非常有 util的味道 , 我認為當初不把 sort 列入 List(AbstractList) 規格的考量,主要是基於第一點。 泛 List 類一開始就設計成異質容器,一個容器內含不同種類的物件,element 與 element 之間往往沒有順序(大小)上的意義,所以不應該把排序當作 List 類基本的 操作之一。 雖然可以選擇把 sort 當作是 List 的 optional operation(不支援此操作的 List 可丟出 UnsupportedOperationException)。所幸不是,因為我個人不喜歡 interface 裡有 optional operation 這樣子的設計。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.136.130

03/07 09:39, , 1F
optional operation 是雙面刃 , 使用與否很難拿捏. :p
03/07 09:39, 1F
文章代碼(AID): #19iJgLMN (java)
討論串 (同標題文章)
文章代碼(AID): #19iJgLMN (java)