Siempre encuentro confusión con quién debería saber sobre el otro.¿Quién debería saber sobre el otro?
por ejemplo:
Circle.Draw(&canvas)
o Canvas.Draw(&circle)
o Draw(&canvas, &circle)
EmployeeVector.Save(&file)
o File.Save(&employee_vector)
o incluso todavía
void operator() (Employee e) { Save(e.Serialize();}
for_each(employees.begin(), employees.end(),File)
Creo que termino "abstrayendo" demasiado donde tengo todo tipo de adaptadores, así que nadie sabe de nadie.
¿Qué pasa si el lienzo cambiara? De lo que tendrías que cambiar el código del círculo en lugar de solo el código del lienzo. –
depende si trabajas con una abstracción de un lienzo –
@Joe Tendrás que cambiar el código de todos modos. Si cambia el lienzo, debe modificar un grupo de métodos en 'Canvas', o modificar un método en cada clase de forma.De cualquier manera, tiene más sentido modificar el código relacionado con un círculo en la clase 'Circle' que hacerlo en la clase' Canvas'. Además, ¿por qué cambiaría el lienzo? Su interfaz probablemente tenga que mantener el cambio para evitar interrumpir las llamadas. –