首页 > 解决方案 > 像包装器一样使用外观

问题描述

我经常看到有些人使用这样的外观。

public class FooFacade {
   Foo foo;

   public boolean isFunny(param1, param2) {
       IsFunnyInput isFunnyInput = new IsFunnyInput(param1, param2);
       return foo.isFunny(isFunnyInput);
   }
}

这是一个正确的方法吗?在我看来,它只是在包中增加了一个类。当你也可以直接使用Foo来做同样的事情。

标签: javadesign-patternswrapperanti-patternsfacade

解决方案


对我来说,这是装饰器模式Foo的一个例子,只有当和FooFacade共享相同的接口时才有意义。

interface Foo { boolean isFunny(p1, p2); }
class FooFacade implements Foo { ... } // FooDecorator, actually

相反,Facade 模式用于执行更复杂的交互,其中涉及几个不同的类(并隐藏这种复杂性)。

Wrapper 模式(又名适配器)意味着几个接口。


推荐阅读