像包装纸一样使用立面



我通常会看到有些人像这样使用了立面。

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

这是一种正确的方法吗?我认为,它只是在包装中添加了另一个类。当您还可以直接使用 foo 进行相同操作时。

对我来说,这是装饰图案的一个示例,只有当FooFooFacade共享相同的接口时才有意义。

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

相反,在涉及几个不同类别(并隐藏此复杂性(的情况下,立面模式用于执行更复杂的相互作用。

包装器图案(又称适配器(意味着几个接口。

我通常会使用A 幕墙隐藏其他第三方库或某些复杂子系统的内部实现详细信息和类。如果IsFunnyInput-类来自另一个库或一个子模块,则立面将帮助您轻松切换库或更改某些实现详细信息,因为它由立面包裹,并且您所有的代码都将使用立式。如果您只想将自己简单地纳入立面的自写课程,而没有其他课程,那么我看不到任何真正的好处!

这是对立面设计模式的非常好的解释

最新更新