Supponiamo che tu abbia un'applicazione che guarda gli ultimi 100 pagamenti eseguiti con una carta di credito e visualizza un grafico per questi con i pagamenti raggruppati in diverse categorie (cibo, auto, sport, ...). Invece del server che esegue tutto il raggruppamento e il calcolo, decidi di sfruttare la potenza di elaborazione sui client (che è ciò che Google fa per GMail) e invia ai clienti solo un elenco di pagamenti.
Ci sarebbe una logica che prende i pagamenti, li raggruppa nelle categorie e calcola i totali per le diverse categorie. Quella logica non dipende dall'interfaccia utente ma viene eseguita sul lato client ed è logica client indipendente dall'interfaccia utente.
D'altra parte, ci deve essere anche la logica per rendere queste cose su un grafico. Ciò probabilmente comporterà il disegno o il rendering delle immagini e richiederà una logica per vedere quanto è grande una determinata parte del grafico da rendere. Questa è una logica che dipende dall'interfaccia utente e viene eseguita sul lato client, in modo che la logica del client dipendente dall'interfaccia utente.
Ora, se hai diverse applicazioni (app native, sito web per dispositivi mobili), avrebbero tutte la stessa logica per raggruppare i pagamenti. Ciò che differirebbe tra queste applicazioni sarebbe il modo in cui il grafico deve essere reso. Quindi il primo è UI indipendente, la seconda logica dipendente dall'interfaccia utente.