Je veux implémenter le concept d'un espace de travail. C'est un concept global - tout autre code interagira avec une instance de cet espace de travail. L'espace de travail sera responsable du maintien de l'état actuel du système (interaction avec le système, persistance de l'état du système, etc.)Dans Ruby, comment implémenter un comportement global?
Quelle est la meilleure stratégie de conception pour mon espace de travail, sachant que cela devra être testable (en utilisant RSpec maintenant, mais heureux de regarder des alternatives).
Après avoir lu quelques projets open source là-bas et j'ai vu 3 stratégies. Aucun de ceux que je peux identifier comme "la meilleure pratique".
Ils sont:
- Inclure la classe
singleton
. Mais comment est-ce testable? L'état global de Workspace changera-t-il entre les tests? - Implémenter tous les comportements en tant que méthodes de classe. Encore une fois, comment testez-vous cela?
- Implémenté tout comportement en tant que méthodes de module. Pas sûr du tout!
Lequel est le meilleur? Ou y a-t-il un autre moyen?
Merci, Gordon
Modifier
Comme je l'ai commencé à inclure le module « singleton » dans tout mon code et je j'ai réalisé à quel point étroitement couplé avais fait mon code, avec des références à ces mondiale instances partout.
J'ai donc commencé à les supprimer entièrement et à passer des références aux instances globales à la place. Mais maintenant je suis sur la route du CIO - en passant les dépendances à travers mes constructeurs.
Est-ce une bonne idée dans Ruby? Ou est-ce que je manque quelque chose?
BTW vous pouvez avoir compris je suis nouveau à Ruby!
Ouais! J'ai essayé de ne pas utiliser le terme du tout! Mais hélas ... Cheers! –