如何在包装多个相互作用的API类时保持封装?

时间:2013-04-23 11:16:06

标签: oop encapsulation wrapping

我有API类A和B,我已经包装过,比如WrappedA和WrappedB。现在我需要以这样的方式调用A.AddMappingTo(B),我可以调用WrappedA.AddMappingTo(WrappedB),这是最好的方法吗?

选项1:内部成员。 WrappedA可以看到WrappedB.B。

// class WrappedA
public void AddMappingTo(WrappedB wrappedB)
{
    a.AddMappingTo(wrappedB.b);
}

感觉它打破了封装?

选项2:内部功能。 WrappedA可以看到调用A.AddMappingTo(B)的WrappedB.AddMappingFrom(A)。

// class WrappedA
public void AddMappingTo(WrappedB wrappedB)
{
    wrappedB.AddMappingFrom(a);
}

//class WrappedB
public void AddMappingFrom(A a)
{
    a.AddMappingTo(b);
}

感觉它破坏了凝聚力 - 现在WrappedA和WrappedB都有涉及相互映射的功能?

还有其他选择吗?

0 个答案:

没有答案