Qual è un modo migliore di progettare questa classe

4

Attualmente ho un codice come questo:

OntologyGenerator generator = new OntologyGenerator();
generator.AddOntologyHeader("Testing");
generator.AddClassDeclaration(owlBuilder);
generator.AddSubClass(owlBuilder);
generator.AddAnnotationAssertions(owlBuilder);

dove quel param di OwlBuilder che vedi essere passato ha raccolte di oggetti come questo:

public class OwlLBuilder: IOwlLBuilder
{
       private ICollection<IOwlClass> owlClasses = new Collection<IOwlClass>();
       private ICollection<IOwlRelation>  owlRelations = new Collection<IOwlRelation> ();
}

così ad esempio quando dico generator.AddClassDeclaration (owlBuilder); passerà in loop attraverso la collezione owlClasses di quel param di owlBuilder e gli farà qualcosa ...

Sento che è un brutto design. Hai altri suggerimenti di design migliori, con un po 'di esempi di codice in modo da avere una visione d'insieme di cosa dovrei fare nella mia testa!

    
posta Blake 21.08.2012 - 02:00
fonte

1 risposta

3

Ho 2 idee opposte:

Sbarazzati completamente di IOwlBuilder e passa la raccolta da solo.

OntologyGenerator generator = new OntologyGenerator();
generator.AddOntologyHeader("Testing");
generator.AddClassDeclaration(classes);
generator.AddSubClass(relations); // ??
generator.AddAnnotationAssertions(??);

Crea un'interfaccia che fornisca tutti i dati necessari per la creazione.

public interface IOntologySource 
{
     public string GetHeader {get; }
     public ICollection<IOwlClass> Classes {get; }
     public ICollection<IOwlRelation> Relations {get; }   
}

E poi usalo come parametro nel costruttore.

OntologyGenerator generator = new OntologyGenerator(ontologySource);

Ma sembra che tu sia che non ci dice tutto e che il tuo codice funzioni molto di più. Devi aggiungere ulteriori dettagli se desideri una risposta migliore.

    
risposta data 21.08.2012 - 07:26
fonte

Leggi altre domande sui tag