Oop 如何在包装多个相互作用的API类的同时维护封装?

Oop 如何在包装多个相互作用的API类的同时维护封装?,oop,encapsulation,word-wrap,Oop,Encapsulation,Word Wrap,我已经包装了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); } // class

我已经包装了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);
}
// class WrappedA
public void AddMappingTo(WrappedB wrappedB)
{
    wrappedB.AddMappingFrom(a);
}

//class WrappedB
public void AddMappingFrom(A a)
{
    a.AddMappingTo(b);
}
感觉它破坏了封装

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

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

//class WrappedB
public void AddMappingFrom(A a)
{
    a.AddMappingTo(b);
}
感觉它破坏了内聚性——现在WrappedA和WrappedB都有涉及相互映射的函数了吗


还有其他选择吗?

也许你可以试着从更高的层次上解释你想归档的内容?也许还有另一种方法?我的代码必须使用糟糕的API,所以我正在编写一个适配器层/框架层,将API调用包装成合理的东西,这样我和其他开发人员都可以使用框架作为API更好的接口。