2010-01-13 5 views
1

Je travaille sur la création d'une bibliothèque d'onglets Javascript. En fait, il a déjà été développé et fonctionne très bien. Mais il est nécessaire de réécrire pour corriger les problèmes et les caprices sous-jacents rencontrés lors de l'utilisation. Quoi qu'il en soit, voici le modèle actuel.JavaScript Class Model

Le modèle actuel possède un objet TabSet qui contient les principales fonctions de la bibliothèque d'onglets: addTab, removeTab, showTab, hideTab et les fonctions d'historique associées. Ensuite, il y a un objet Tab qui contient les données/méthodes liées à l'onglet: showThrobber, hideThrobber, reload, et la création des éléments DOM réels pour l'onglet. Maintenant, vous pouvez voir que c'est un peu décousu. TabSet poignées montrant un onglet et cachant un onglet et Tab poignées rechargement de l'onglet.

Voici la question: Quelle est la meilleure façon d'organiser les méthodes pour cette bibliothèque d'onglets. Le problème auquel nous sommes confrontés est que le modèle actuel, bien que disjoint, a du sens. TabSet affiche en effet un onglet, masquant un onglet et supprimant un onglet. Mais l'onglet lui-même est en effet montré, caché et retiré. Vraiment, toutes les fonctions ont un sens d'être dans l'une ou l'autre classe: TabSet ou Tab.

Utilisons une analogie. Quand quelqu'un a besoin de parler, tout le monde doit cesser de parler. Il y a deux façons d'y arriver. 1) Le chef (TabSet) dit à tout le monde d'arrêter de parler, puis dit à l'orateur de commencer à parler. 2) L'orateur dit à tout le monde de se taire et commence à parler. Il est logique que le contrôleur dise aux autres onglets de se cacher et indique au nouvel onglet de s'afficher. Mais il est également logique que l'onglet indique à tous les autres onglets de se cacher puis de se montrer.

Que pensez-vous?

+2

Les stupides parmi nous ont besoin d'images. Ou au moins un semblant de code. –

Répondre

2

Personnellement, je le conçois de sorte qu'un onglet ne connaisse que lui-même et le TabSet qui le gère. Il ne porterait pas de référence aux autres onglets. Je voudrais mettre show() méthode sur Tab; En interne, il demande à TabSet de masquer tous les autres onglets et de s'afficher.

Je suppose que exactement un onglet doit être affiché à tout moment, donc il ne sert à rien d'avoir une méthode publique pour cacher un onglet individuel.

L'idée derrière cette conception est que vous avez moins d'erreurs à vérifier. Si votre objet TabSet a une méthode showTab(tab), vous devez vérifier que l'onglet transmis est bien l'un des onglets de l'ensemble.

Habituellement, lorsque je conçois une API, ma première priorité est de rendre difficile ou impossible de transmettre des entrées invalides.

+0

Hm. J'aime vraiment l'idée des onglets qui demandent au TabSet de faire quelque chose ... il semble que moins puisse aller mal puisque TabSet est omniscient. – SpaDusA