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)...
Comments have been closed on this topic.
«agosto»
domlunmarmergiovensab
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345