Esiste un nome per l'anti-pattern di avere componenti di basso livello che controllano quelli di livello superiore?

5

Ad esempio, supponiamo di avere una classe dell'interfaccia utente pageControl e una classe di business logic searcher con quanto segue:

pageControl.js

function searchButtonClicked() {
  // call business logic class method when button clicked
  searcher.beginSearch();
}

function showSearchResultsPage(searchResults) {
  // when this is called, display results
  ui.loadContent(searchResults);
}

searcher.js

// This module has a low to moderate chance of someday being used on two or more different pages.
function beginSearch() { ... }

function searchCompleted(results) {
  // This here is what I view as the main problem
  pageControl.showSearchResultsPage(results);
}

Il problema è che searcher è specificamente legato a pageControl , e sta prendendo la decisione che la pagina dei risultati di ricerca sarà la prossima a comparire. L'esempio che stavo per dare alla gente sul perché questo è sbagliato dà l'idea che " non si chiamerebbe direttamente la logica per l'intera app all'interno di Button > onClick ", ma io sono cercando di trovare una discussione più completa sul perché sia così.

All'inizio pensavo che si trattasse di "inversione del controllo", ma guardare su Wikipedia non è stato descritto come negativo, quindi non penso che sia il termine giusto per questo tipo di pattern.

Esiste un nome per questo anti-pattern di avere componenti di basso livello che controllano quelli di livello superiore?

    
posta Katana314 03.06.2015 - 17:07
fonte

2 risposte

3

Si chiama inversione di autorità , così chiamato da Ed Yourdon se la memoria serve. Un esempio di utilizzo può essere trovato qui .

    
risposta data 12.06.2015 - 15:43
fonte
1

Dipendenza circolare

Se visualizziamo pageControl.js come layer UI, forse controller e searcher.js come accesso ai dati o livello aziendale, è stata introdotta una dipendenza circolare che li rende effettivamente inseparabili e vanifica tutti i vantaggi del layering.

Gli argomenti potrebbero anche essere fatti per codice spaghetti e complessità accidentale.

    
risposta data 12.06.2015 - 14:55
fonte

Leggi altre domande sui tag