2010-01-13 20 views
1

我正在創建一個Javascript選項卡庫。事實上,它已經被開發並且工作得很好。但是,這是由於重寫來解決我們在使用它時發現的一些潛在的煩惱和怪癖。無論如何,這是目前的模型。Javascript類模型

當前模型有一個TabSet對象,其中包含選項卡庫的主要功能:addTab,removeTab,showTab,hideTab和相關的歷史記錄功能。然後是一個Tab對象,其中包含與該選項卡相關的數據/方法:showThrobber,hideThrobber,重新加載以及爲該選項卡創建實際的DOM元素。現在,你可以看到這有點脫節。 TabSet句柄顯示一個選項卡並隱藏一個選項卡,並選項卡處理重新加載該選項卡。

下面是問題:組織此選項卡庫的方法的最佳方法是什麼?我們要解決的問題是,目前的模型雖然脫節,但是合理。 TabSet確實顯示了一個標籤,隱藏了一個標籤並刪除了一個標籤。但Tab本身確實正在顯示,隱藏和刪除。真的,所有的函數都可以在任何一個類中使用:TabSet或Tab。

讓我們用一個類比。當有人需要談話時,每個人都需要停止交談。有兩種方法可以發生。 1)領導者(TabSet)告訴大家停止交談,然後告訴發言者開始交談。 2)發言者告訴大家閉嘴並開始說話。讓控制器告訴其他選項卡隱藏並告訴新的選項卡顯示是有意義的。但是讓標籤告訴所有其他標籤隱藏然後顯示它自己也是有意義的。

你的想法是什麼?

+2

我們之間的愚蠢需要圖片。或者至少有一些代碼的外表。 – 2010-01-13 21:00:01

回答

2

就我個人而言,我會設計它,以便Tab只知道自己和管理它的TabSet。它不會帶有對其他選項卡的引用。

我把show()方法放在Tab上;在內部它會要求TabSet隱藏所有其他選項卡並顯示它自己。

我假設在任何時候都必須顯示一個選項卡,因此使用公共方法隱藏單個選項卡沒有意義。

該設計背後的想法是,你有更少的錯誤檢查擔心。如果您的TabSet對象具有showTab(tab)方法,則必須檢查以確保傳入的選項卡實際上是該選項卡中的選項卡之一。

通常,當我設計一個API時,我的首要任務是讓它很難或不可能通過無效輸入。

+0

嗯。我真的很喜歡Tabs的想法,要求TabSet做一些事情....看起來好像少了可能會出錯,因爲TabSet是無所不知的。 – SpaDusA 2010-01-13 21:34:05