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 @ mercoledì 24 gennaio 2007 00:52

Print

Comments on this entry:

# re: Program to an interface, not an implementation

Left by Adrian Florea at 24/01/2007 14:21
Gravatar
oh, sorry, non avevo notato il link (colpa forse del CSS)...

Your comment:



 (will not be displayed)


 
 
Please add 4 and 5 and type the answer here:
 

Live Comment Preview:

 
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011