Posso presupporre che la programmazione orientata all'interfaccia sia una buona programmazione orientata agli oggetti?

4

Ho programmato per decenni ma non sono stato abituato alla programmazione orientata agli oggetti. Ma per anni passati ho avuto una grande opportunità di imparare OOP, i suoi principi e molti schemi che sono grandiosi.

Da quando ho imparato l'OOP, ho provato ad applicarli a un paio di progetti e ho trovato che quei progetti hanno avuto successo. Sfortunatamente non ho seguito la programmazione estrema che suggerisce di scrivere prima i test, principalmente perché i tempi erano stretti. Quello che ho fatto per quei progetti era

  1. Identifica tutte le classi necessarie e creale con le proprietà e i metodi appropriati
  2. ogni volta che esiste una dipendenza tra classi, scrivi un'interfaccia tra loro
  3. controlla se esistono schemi per determinate relazioni tra classi da sostituire

Con successo, intendevo dire che si trattava di uno sforzo di sviluppo rapido, che le classi possono essere riutilizzate meglio e abbastanza flessibili in modo che un altro programmatore non debba modificare qualcos'altro per sistemare un'altra parte.

Ma mi chiedo se questa è una buona pratica. Certo, so che ho bisogno di mettere i test delle unità di scrittura prima nel mio processo di lavoro. Ma a parte questo, c'è qualche problema con questo approccio - creando molte interfacce - a lungo termine?

    
posta Tae-Sung Shin 08.09.2012 - 19:50
fonte

1 risposta

2

Sì. Usare le interfacce nella programmazione orientata agli oggetti sarebbe una buona pratica. Vantaggi dell'uso di interfacce nel modello:

  1. Le interfacce forniscono lo sviluppo asincrono senza definire le implementazioni della classe.
  2. Implementazioni di più classi di un particolare comportamento / operazione.
  3. Le interfacce forniscono un insieme definito di standard che devono essere seguiti dalle classi di implementazione.
  4. Se stai scrivendo un'API di un pacchetto di utilità, devi esporre le operazioni utilizzando le interfacce in modo che un utente di tale API possa facilmente integrarsi.

Queste funzionalità sopra indicate sono automaticamente incluse nel tuo modello in caso di utilizzo di interfacce, ma in caso di implementazioni dirette di classe devi prenderne cura manualmente.

Tuttavia ci sono anche alcuni svantaggi:

  1. I nuovi membri di sviluppo devono seguire gli standard definiti dalle interfacce se stanno sviluppando nuove implementazioni. È un po 'complicato e richiede tempo per sviluppare il codice con i nuovi membri.
  2. In caso di modifica degli standard di interfaccia, è necessario passare a tutte le implementazioni di classe.
risposta data 08.09.2012 - 20:14
fonte

Leggi altre domande sui tag