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?