由於您的問題非常抽象,因此很難以確保您所寫內容的具體內容來回答問題。
據我所知,你問的問題是真的,如果你有
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