Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包装对静态方法/变量的访问的模式名是什么?_Java_Design Patterns_Proxy_Wrapper - Fatal编程技术网

Java 包装对静态方法/变量的访问的模式名是什么?

Java 包装对静态方法/变量的访问的模式名是什么?,java,design-patterns,proxy,wrapper,Java,Design Patterns,Proxy,Wrapper,从问题开始,您将如何描述我在几个场合需要实现的以下模式 场景是,我正在引用来自第三方类的静态方法或变量,但我想将其隐藏在接口后面,以便模拟它进行测试 例如,在Java中,commons lang库有一个SystemUtils类,该类带有常量IS_OS_WINDOWS等。我想运行独立于底层操作系统并模拟各种操作系统的测试,因此我将对常量的访问包装如下: interface ISystemUtils { boolean isOsWindows(); } class SystemUtilsI

从问题开始,您将如何描述我在几个场合需要实现的以下模式

场景是,我正在引用来自第三方类的静态方法或变量,但我想将其隐藏在接口后面,以便模拟它进行测试

例如,在Java中,commons lang库有一个SystemUtils类,该类带有常量IS_OS_WINDOWS等。我想运行独立于底层操作系统并模拟各种操作系统的测试,因此我将对常量的访问包装如下:

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的布局