输入类 - 适当使用朋友?

时间:2009-11-26 01:15:29

标签: c++

在看到我的一个类变得太大之后,我决定将其输入处理分离到另一个类中。但是,为了使输入实际对对象执行任何操作,它需要访问其私有成员。

我显然可以在主类中提供输入类可以使用的公共函数,但是由于耦合在这里是自然的,所以将它作为朋友是否合适?或者我错过了一些适合这里的模式?

2 个答案:

答案 0 :(得分:2)

你的问题没有明确的答案;说实话,这真的是品味问题。听起来好像使用friend关键字,如果这两个类在逻辑上耦合,特别是如果没有其他类需要访问您所指的私有成员变量。另一种选择是使输入处理类成为主类中的嵌套类。然后它将自动访问私有成员变量,并更强调两个类的逻辑耦合。

但这是主观判断;无论你认为什么方法都能使你的代码更具可读性,更易于访问和更易于维护,这是正确的答案。

答案 1 :(得分:0)

听起来像是让朋友们失败了分裂一个“太大”的课程的目的。如果你这样做那么你将把课程分成两部分,但它们仍然会紧密耦合,就像以前一样不可分割。

一种方法是编写公共方法,描述您为响应输入而要做的事情。例如,如果您的类表示可以基于箭头键输入在四个方向上移动的游标,则您将编写诸如“MoveUp”和“MoveLeft”之类的方法,然后在类之外调用这些方法以响应输入事件。在这种情况下,没有必要访问类的私有游标数据。