Program to an interface, not an implementation

Discussioni come questa sono un classico, e classica è la domanda: "devo definire i miei tipi base sotto forma di interfaccia o classe?" Il principio di design "program to an interface, not an implementation" [GoF, 18] sembrerebbe consigliare la prima ipotesi, apparentemente in contrasto con Cwalina che, nelle Design Guidelines, afferma: "Do prefer classes over interfaces". Chi ha ragione, quindi? Entrambi. Entrambi perchè il GoF è un libro scritto pensando a C++, un linguaggio nel quale le "interfacce" non esistono (e nemmeno ce ne sarebbe bisogno, vista la disponibilità della MI e la possibilità di definire classi astratte pure). Ergo, Gamma & c. non si riferiscono alle interfacce nel senso di "interface", bensì riferendosi agli "abstract types". Il senso del noto principio di design è quindi: "Programmate pensando ad una famiglia di tipi, e non per una loro specifica implementazione (e occhio alle dipendenze!)". Polymorphism anyone? <g>

Technorati tags: ,

posted @ Tuesday, January 23, 2007 10:52 PM

Print

Comments on this entry:

# re: Program to an interface, not an implementation

Left by Adrian Florea at 1/24/2007 12:21 PM
Gravatar
oh, sorry, non avevo notato il link (colpa forse del CSS)...
Comments have been closed on this topic.
«January»
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678