加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 谁应该了解另一个?

发布时间:2020-12-16 03:38:30 所属栏目:百科 来源:网络整理
导读:我总是对谁应该了解对方感到困惑. 例如: Circle.Draw( canvas)或Canvas.Draw( circle) 或绘制(画布,圈) EmployeeVector.Save( file)或File.Save( employee_vector) 甚至还是 void operator() (Employee e) { Save( e.Serialize();} for_each(employees.begi
我总是对谁应该了解对方感到困惑.

例如:

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的想法可能是最好的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读