我FOO()
在类A
中有一个方法,它将类数据成员的输入作为其参数B
(假设它们是两个浮点数和一个整数)。我理解这一点的方式,通常最好用类似的东西来实现:
A->FOO1(B, other_data_x)
而不是
A->FOO2(B.member1, B.member2, B.member3, other_data_x).
我收集了一个但不是唯一的优点是它留下了B
可以访问哪些成员的详细FOO1()
信息,因此有助于隐藏实现细节。
但我想知道的是,这是否真的在类A
和B
. A
前一种情况下的类必须知道类的存在B
(通过类似的东西include class_B_header.h
),并且如果B
更改或移动到不同类或类的成员B
完全被消除,则必须进行相应的A
修改FOO1()
。相比之下,在后一种方法中,FOO2()
它并不关心类是否B
存在,实际上它只关心它是否提供了两个浮点数(在这种情况下由B.member1
and组成B.member2
)和一个 int ( B.member3
)。可以肯定的是,在后一个示例中也存在耦合,但是这种耦合由 where 处理FOO2()
被调用或任何类碰巧正在调用FOO2()
,而不是在A
or的定义中B
。
我想这个问题的第二部分是,当我们想要实现这样的解决方案时,是否有一种很好的A
解耦B
方法FOO1()
?