java - 像包装器一样使用外观
问题描述
我经常看到有些人使用这样的外观。
public class FooFacade {
Foo foo;
public boolean isFunny(param1, param2) {
IsFunnyInput isFunnyInput = new IsFunnyInput(param1, param2);
return foo.isFunny(isFunnyInput);
}
}
这是一个正确的方法吗?在我看来,它只是在包中增加了一个类。当你也可以直接使用Foo来做同样的事情。
解决方案
对我来说,这是装饰器模式Foo
的一个例子,只有当和FooFacade
共享相同的接口时才有意义。
interface Foo { boolean isFunny(p1, p2); }
class FooFacade implements Foo { ... } // FooDecorator, actually
相反,Facade 模式用于执行更复杂的交互,其中涉及几个不同的类(并隐藏这种复杂性)。
Wrapper 模式(又名适配器)意味着几个接口。
推荐阅读
- pine-script - Pine Editor 回测不适用于较低的时间框架图表
- pandas - 重复将多个 Panda 数据集导出到多个 csv 文件的任务
- graphics - 获取给定设备上统一缓冲区的偏移对齐
- git - Gitkraken 无法通过 HTTPS 访问私有仓库
- python - 使用 firwin 应用带通滤波器
- docker - make: *** 没有规则来制作目标'build-x86_64'。停止
- java - ActiveMQ Artemis Java JPMS(Java 平台模块系统)是否兼容?
- javascript - Javascript - 如何从动态字符串内容中转义双引号,意外标识符错误
- reactjs - 如何在反应中更新父组件
- laravel - cpanel上的laravel上传项目未运行