Java 包装对静态方法/变量的访问的模式名是什么?
从问题开始,您将如何描述我在几个场合需要实现的以下模式 场景是,我正在引用来自第三方类的静态方法或变量,但我想将其隐藏在接口后面,以便模拟它进行测试 例如,在Java中,commons lang库有一个SystemUtils类,该类带有常量IS_OS_WINDOWS等。我想运行独立于底层操作系统并模拟各种操作系统的测试,因此我将对常量的访问包装如下:Java 包装对静态方法/变量的访问的模式名是什么?,java,design-patterns,proxy,wrapper,Java,Design Patterns,Proxy,Wrapper,从问题开始,您将如何描述我在几个场合需要实现的以下模式 场景是,我正在引用来自第三方类的静态方法或变量,但我想将其隐藏在接口后面,以便模拟它进行测试 例如,在Java中,commons lang库有一个SystemUtils类,该类带有常量IS_OS_WINDOWS等。我想运行独立于底层操作系统并模拟各种操作系统的测试,因此我将对常量的访问包装如下: interface ISystemUtils { boolean isOsWindows(); } class SystemUtilsI
interface ISystemUtils {
boolean isOsWindows();
}
class SystemUtilsImpl implements ISystemUtils {
@Override
public boolean isOsWindows() {
return SystemUtils.IS_OS_WINDOWS;
}
}
这是一个代理、一个通用包装还是其他什么?这称为:
facade是一个对象,它为更大的应用程序提供了一个简化的接口
代码体,例如类库。立面可以:
使软件库更易于使用、理解和测试,因为
facade为常见任务提供了方便的方法;
出于同样的原因,使库更具可读性
减少外部代码对库内部工作的依赖性,因为大多数代码都使用外观,因此在开发系统时允许更大的灵活性
用一个设计良好的API包装一个设计糟糕的API集合。
这称为:
facade是一个对象,它为更大的应用程序提供了一个简化的接口
代码体,例如类库。立面可以:
使软件库更易于使用、理解和测试,因为
facade为常见任务提供了方便的方法;
出于同样的原因,使库更具可读性
减少外部代码对库内部工作的依赖性,因为大多数代码都使用外观,因此在开发系统时允许更大的灵活性
用一个设计良好的API包装一个设计糟糕的API集合。
Facade模式是一个很好的答案,尽管我确实同意,根据我的经验,它通常至少会公开一些不同的操作/类。话虽如此,许多其他模式也可以达到同样的目的——代理可能是我的第一选择,但适配器或适配器也可能是一个很好的选择。你可能会遇到的另一个术语是a Facade模式是一个很好的答案,尽管我确实同意,根据我的经验,它通常至少会公开一些不同的操作/类。话虽如此,许多其他模式也可以达到同样的目的——代理可能是我的第一选择,但适配器或适配器也可能是一个很好的选择。你可能会遇到的另一个术语是a 谢谢你的快速回答@adriaan。门面感觉不错,尽管我的理解是,它通常都是?涉及覆盖多个基础类的元素。然而,我的例子可以说涵盖了上面的大部分要点,特别是第一点。@Gendarme修复了正面链接的布局,TNX感谢快速答案@adriaan。门面感觉不错,尽管我的理解是,它通常都是?涉及覆盖多个基础类的元素。然而,我的例子可以说涵盖了上面的大部分要点,特别是第一点。@Gendarme修复了正面链接tnx的布局