Estoy trabajando en una aplicación basada en diapositivas en C++. Cada diapositiva tiene una colección de diapositivas-artículos que se pueden incluir elementos como subtítulo, botón, rectángulo, etc.¿Cómo debo diseñar un conjunto de clases relacionadas donde solo algunas de ellas admiten una determinada operación?
Sólo algunos de estos artículos de apoyo relleno, mientras que otros no lo hacen .
¿Cuál es la mejor manera de implementar el relleno para los elementos de la diapositiva en este caso? Aquí hay dos maneras de que pensé:
crear una interfaz
Fillable
e implementar esta interfaz para los elementos deslizantes que soportan llenar, manteniendo todas las propiedades relacionadas con rellenar el interfaz. Al iterar sobre la lista de elementos de la diapositiva, dígale que los cambie a enFillable
, y si tiene éxito, realice la operación relacionada con el llenado.Haz una clase
fill
. Convierta un punterofill
en una clase de elemento deslizante, asigne el objetofill
al punterofill
para aquellos objetos que admitan relleno y, para el resto, manténgalo nulo. Asigne una funciónGetFill
, que devolverá elfill
para los artículos si existe; de lo contrario, devuelveNULL
.
¿Cuál es el mejor enfoque para esto? Estoy interesado en el rendimiento y la mantenibilidad.
Esto se conoce como una interfaz gruesa, y es un antipatrón. –
@Armen Tsirunyan: Ok, bien. Si hay un antipatrón debe haber el patrón apropiado para esto también. Sin duda me lo puedes explicar :) Ah, y si tu solución contiene el doble de clases (adaptadores o lo que sea) no me interesa ... – duedl0r
@ duedl0r: me temo que he leído mal el párrafo entero, lo siento. –