首页 > 解决方案 > 适配器设计模式:公开适配器类的私有适配器实例除了客户端代码?

问题描述

除了客户端代码之外,有什么方法可以在我需要它时在 Adapter 类中公开私有适配器实例?

详细地说,在某些情况下,我希望将适配器实例从适配器公开给公众,但我不想使用客户端代码来执行此操作。因此,在 Adapter 类中编写一个像这样的方法是否合适:

public Adaptee ExposeAdaptee(){
    return _adapteeInstance;
}

在此处输入图像描述

标签: design-patternsclientadapter

解决方案


这称为公开委托尽管在某些情况下这是有效的(超出了此答案的范围),但这通常是不明智的,因为它违反了得墨忒耳定律并因此违反了封装。我不会推荐它。任何抽象背后的核心思想都是隐藏细节;适配器模式也不例外。在这种情况下,我们将委托的接口隐藏在客户端期望的接口后面。将委托暴露给客户将允许绕过这个抽象,给它多个相互冲突的职责——这不是一个好的设计决策。

如果客户端需要委托以及适配器,那应该不是问题,因为客户端无论如何都会将委托实例传递给适配器的构造函数。现在,如果您说其他客户端需要访问相同的委托实例,那么这完全是一个不同的问题,您可以使用其他模式/解决方案(单例或将实例提升到公共依赖项)。

无论如何,我希望这会有所帮助!


推荐阅读