在问题How do the Proxy, Decorator, Adapter, and Bridge Patterns differ?之后,您如何描述我需要多次实施的以下模式?
场景是我引用了来自第三方类的静态方法或变量,但我想将它隐藏在接口后面,以便我可以模拟它进行测试。
例如,在Java中,commons-lang库有一个SystemUtils类,常量为IS_OS_WINDOWS等。我想运行独立于底层操作系统的测试并模仿各种操作系统,所以我按如下方式包含对常量的访问: / p>
interface ISystemUtils {
boolean isOsWindows();
}
class SystemUtilsImpl implements ISystemUtils {
@Override
public boolean isOsWindows() {
return SystemUtils.IS_OS_WINDOWS;
}
}
这是一个代理,一个通用"包装"还是别的什么?
答案 0 :(得分:5)
这称为Facade:
外观是一个为更大的界面提供简化界面的对象 代码体,例如类库。门面可以:
- 使软件库更易于使用,理解和测试,因为 门面有便捷的常见任务方法;
- 出于同样的原因,使库更具可读性
- 减少外部代码对库内部工作的依赖性,因为大多数代码使用外观,从而允许更灵活地开发系统
- 使用一个精心设计的API包装设计不佳的API集合。
答案 1 :(得分:1)