Los
autores
del
GoF
proponen
dos
principios
básicos
:
Programar
orientado
a
una
____________________
y
no
a
una
____________________
.
Este
principio
busca
que
el
código
se
utilice
como
una
herramienta
que
no
revele
su
funcionamiento
;
es
la
clásica
metáfora
de
la
?
caja
____________________
?
,
implementada
a
través
del
principio
de
la
____________________
.
De
este
modo
,
los
usuarios
del
código
se
centran
en
la
forma
abstracta
,
lo
que
puede
hacer
y
no
puede
hacer
el
código
,
en
vez
de
en
el
cómo
lo
hace
.
Favorecer
la
composición
antes
que
la
herencia
.
En
las
arquitecturas
orientadas
a
objetos
,
la
composición
y
la
herencia
pueden
ser
muy
próximas
funcionalmente
,
pero
conceptualmente
son
distintas
.
Ambas
permiten
la
agregación
de
funcionalidades
cuando
diseñamos
una
clase
y
evitan
la
____________________
____________________
____________________
,
pero
tienen
una
diferencia
fundamental
:
la
herencia
,
que
expone
el
funcionamiento
de
una
clase
,
mientras
que
la
____________________
no
lo
hace
(
si
trata
con
clases
bien
encapsuladas
)
.
Siguiendo
el
principio
anterior
,
es
lógico
que
los
patrones
GoF
favorezcan
la
____________________
,
ya
que
la
____________________
no
garantiza
la
____________________
.