由于您的问题非常抽象,因此很难以确保您所写内容的具体内容来回答问题。
据我所知,你问的问题是真的,如果你有
interface A { public void a(); }
interface B { public void b(); }
class ABFacade {
private final A a = ...
private final B b = ...
public void ab() { a.a(); b.b(); }
}
则是有用与否?
答案是要依赖于
- 问题域 - 如何定义的呢?
- 如何命名事物 - 人们会理解它吗?
- 代码重用 - 是否有不止一件事情需要调用facade方法?
我不认为有一个正确的答案 - 至少没有具体的例子。这也取决于使用这种模式的目的是什么 - 更好的代码重用?更少的重复代码集可以完成一些复杂的事情?创建阻塞点所有X必须通过的代码?对其他开发人员的清晰度?这个问题的答案会深刻地影响你的代码的外观。
我可以推荐一些一般的东西,这可能有助于产生一些有用的东西:
- 如果一个门面方法将只在一个地方使用,但可能不应该是在门面 - 如果它的代码只有一个客户端,这可能是更有意义的做内联的所有步骤
- 可以对立面上的某些操作给出明确的命名?结果会比写出正面所做的一切更直观吗?如果是这样,那么这可能应该在门面
最后,它只是一个模式。如果它允许您编写更小,更好或更可靠的软件,请使用它;如果没有,请不要打扰。
由于问题是相当开放的,我推荐Head First Design Patterns ch。 7,那里解释了很多最佳实践。而2) - 限制是它开始让你和你的程序员感到困惑。 – LastFreeNickname
@LastFreeNickname:哪一部分你不明白?请让我知道我也会尝试添加。 – Rupesh