design-patterns - 适配器设计模式:公开适配器类的私有适配器实例除了客户端代码?
问题描述
除了客户端代码之外,有什么方法可以在我需要它时在 Adapter 类中公开私有适配器实例?
详细地说,在某些情况下,我希望将适配器实例从适配器公开给公众,但我不想使用客户端代码来执行此操作。因此,在 Adapter 类中编写一个像这样的方法是否合适:
public Adaptee ExposeAdaptee(){
return _adapteeInstance;
}
解决方案
这称为公开委托。尽管在某些情况下这是有效的(超出了此答案的范围),但这通常是不明智的,因为它违反了得墨忒耳定律并因此违反了封装。我不会推荐它。任何抽象背后的核心思想都是隐藏细节;适配器模式也不例外。在这种情况下,我们将委托的接口隐藏在客户端期望的接口后面。将委托暴露给客户将允许绕过这个抽象,给它多个相互冲突的职责——这不是一个好的设计决策。
如果客户端需要委托以及适配器,那应该不是问题,因为客户端无论如何都会将委托实例传递给适配器的构造函数。现在,如果您说其他客户端需要访问相同的委托实例,那么这完全是一个不同的问题,您可以使用其他模式/解决方案(单例或将实例提升到公共依赖项)。
无论如何,我希望这会有所帮助!
推荐阅读
- javascript - 链接仅适用于桌面,但不适用于移动设备
- hadoop - HortonWorks HDP 2.6.5 或 2.5.0:显示“我的用户 Web 根”而不是 AMBARI
- c# - 如何用 \" 修复 JSON?
- c++ - 将逻辑 OR 与 cout 运算符一起使用
- selenium - 如何修复在 robcherry/docker-chromedriver docker 中下载文件的问题
- highcharts - 使用highchart结合甘特图和折线图
- c# - 最佳对话流的 Bot 框架架构设计建议
- javascript - Api 没有在 reactjs 中调用 IE11 中的第二次点击
- import - Sqoop 查询导入失败:参数“目录”不是目录
- javascript - 使用 GraphAPI 将 Base64 图像作为帖子上传到 Facebook