c – 谁应该了解另一个?

前端之家收集整理的这篇文章主要介绍了c – 谁应该了解另一个?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我总是对谁应该了解对方感到困惑.

例如:

Circle.Draw(& canvas)或Canvas.Draw(& circle)

或绘制(&画布,&圈)

EmployeeVector.Save(& file)或File.Save(& employee_vector)

甚至还是

void operator() (Employee e) { Save( e.Serialize();}
  for_each(employees.begin(),employees.end(),File)

我想我最终“抽象”了太多,我有各种适配器,所以没有人知道任何人.

解决方法

取决于谁拥有专业知识.

如果您可以绘制的唯一内容是圆圈,那么当然您可以将它放在Canvas中并继续使用.如果Canvas有一个绘制通用Shapes的方法,那么它将落在Shape的各个子类上以绘制自己.例如,圆圈肯定知道如何在画布上绘制自己.我怀疑画布本身知道如何画圆,除非你硬编码功能,这有点杀死了多态的整个想法.

出于同样的原因,向量可能知道如何将自己保存到文件中,但我怀疑文件知道如何处理向量.但是向量可以包含各种各样的东西,因此它应该将大部分工作委托给它的实际元素.所以for_each的想法可能是最好的.

原文链接:https://www.f2er.com/c/110774.html

猜你在找的C&C++相关文章