2009-01-19 7 views
1

Une application a une classe Foo qui est une classe concrète avec toute la logique métier et le comportement correctement défini.Où placer les méthodes GetObjectColletion?

Cela dit, il faut obtenir la collection de tous les Foos qui sont persistants à cette application.

Où devrait être placée cette méthode "IEnumerable GetFoos()"?

Pas à la classe Foo elle-même, non?

Répondre

1

Vous aurez besoin d'une classe Foos dérivée de CollectionBase, ou similaire, pour exposer des instances de votre classe Foo.

0

Pour obéir aux principes SOLID, vous devez penser à l'objectif réel de la classe Foo. Comme je ne connais pas les détails d'implémentation et le fonctionnement interne de Foo, je ne peux pas dire grand-chose. Mais ce design ne serait-il pas plus conventionnel?

class Foo 
{ 
    IPersistancePresenter persistancePresenter; 
    public Foo(IPersistancePresenter persistancePresenter) 
    { 
    persistancePresenter = persistancePresenter; 
    } 
} 

interface IPersistancePresenter <T> 
{ 
    IList<T> GetInstancesOf<T>(); 
} 

Foo ne changera pas (car il ne devrait pas être la responsabilité de Foo) si plus tard il y aurait une autre classe que la Foo, qui doivent être poursuivis et ont des cas recueillis lors de l'exécution.

Questions connexes