2012-07-24 13 views
1

我試圖設計一個使用'立面圖案'的界面。然而,由於這裏指出:如何避免創建大量的方法,同時使用最少知識原則?

http://www.scribd.com/doc/6599003/7/Principle-of-Least-Knowledge-PLK

,這是逼我創造了大量的類中的存取方法。根據上述鏈接,作爲PLK的變體,我們可以返回接口引用而不是引用具體對象。

我的問題是如何解決這個問題?一旦我們返回一個接口引用,我們需要用適當的類來實例化。最終,我們最終會從該對象調用一個方法嗎?

+0

如果您使用Facade模式,則該對象將簡化對包裝對象的使用。門面本身可能相當複雜。如果直接暴露包裝對象或其接口之一,那麼在創建外觀時就沒有多少意義。 – BonyT 2012-07-24 14:23:01

回答

0

說你是使用某種模式設計接口聽起來像你使用的模式,而不知道爲什麼。有沒有設計問題,你正在試圖解決?如果是,則應該清楚返回接口是否可以解決問題。

顧名思義,門面模式用於隱藏您不希望呼叫者看到的東西。隱藏某些東西的一個很好的理由是複雜性 - 如果你有一些複雜的代碼,你可以隱藏幕後的複雜性,爲調用者提供一個簡化的界面。這很好,因爲調用者和被調用代碼之間的耦合是鬆散的:如果實現細節發生變化,您可以將更改隱藏在外觀後面,調用者不必關心。

隱藏某物的方法之一是隱藏確切的類型。假設您有一個類Foo,它實現了BarBaz,以及一個只需要使用Baz中聲明的方法的調用者。然後,隱藏複雜性的一種方法是僅返回界面:「實現Baz的東西」。然後,來電者不必關心FooBar,甚至更好的是,主叫方不能使用FooBar在所有。您可以隨意更改FooBar,這是件好事。

相關問題