Questo accoppiamento è alto?

2

Domanda


Attualmente sto lavorando a un incarico per la scuola. L'incarico consiste nel creare un programma puzzle / calcolatrice in cui si impara a lavorare con diverse strutture dati (come gli stack). Abbiamo generato stringhe matematiche di infissi come "1 + 2 * 3 - 4" e quindi le trasformiamo in stringhe matematiche postfissa come "1 2 + 3 * 4 -".
Nel mio libro l'autore crea una classe speciale per convertire la notazione infisso in postfix. Stavo pensando di usarlo ma, mentre stavo per implementarlo, mi chiedevo se il seguente è ciò che definiresti "accoppiamento elevato". Ho letto qualcosa su questo (niente di ciò che viene insegnato nel libro o altro) e mi chiedevo l'aspetto (dal momento che devo ancora coglierlo).

Problema


Ho creato una classe PuzzleGenerator che genera la notazione infissa del puzzle (o la stringa matematica, qualunque sia il nome che si desidera chiamare) quando viene creata un'istanza. Stavo per creare un metodo getAnswer () in cui vorrei istanziare la classe InToPost (la classe del libro) per convertire la notazione infix in postfox e quindi calcolare la risposta. Ma mentre facevo questo ho pensato: "L'uso della classe InToPost in questo metodo è un accoppiamento elevato, e sarebbe meglio posizionarlo in un altro metodo?" (come un metodo "convertPostfixToInfix", all'interno della classe PuzzleGenerator)

Grazie in anticipo.

    
posta Bono 20.10.2013 - 15:00
fonte

1 risposta

5

No, non sarebbe un accoppiamento elevato - non più che usare qualsiasi classe di libreria all'interno di un'altra classe.

Si tratta di un accoppiamento, ovviamente, perché è una dipendenza. L'accoppiamento elevato si verifica quando ci sono troppe dipendenze dirette tra le classi e si perde la possibilità di riciclare il codice. Ad esempio, se hai una classe LogWriter con un solo metodo: Log( String ) , puoi utilizzare una classe specifica per l'output di un log, come una classe di scrittura di file.

Quanto sopra sarebbe un accoppiamento elevato perché non è possibile riutilizzare la classe LogWriter in altre modalità di output. Il lavoro della classe LogWriter consiste nel creare la riga di log e inviarli, non specificatamente nel log del file system.

In tal caso sarebbe meglio iniettare la dipendenza nel costruttore, passandola: si avrebbe un costruttore LogWriter( OutputStream ) che memorizza e riutilizza lo stream per produrre il log.

Un altro modo possibile è leggere un file di configurazione e comporre la classe da esso usando reflection.

    
risposta data 20.10.2013 - 15:34
fonte

Leggi altre domande sui tag