18

我最近才真正注意到了依賴注入和Decorator設計模式的奇蹟,並且我在各處都使用它。您對Decorator模式使用什麼命名約定?

然而,儘管它很精彩,但我一直在困難的事情是命名我的裝飾類,所以我只想知道其他人做了什麼。你總是追加裝飾詞這個詞嗎?你整合了它的裝飾界面的名字嗎?他們有自己的名字空間嗎?

你們是做什麼的?

回答

2

通常情況下,模式被封裝在一個對象中(而不是對象集合),那麼在類中包含模式名稱就更加清楚和容易,在這種情況下,使用Decorator作爲後綴。這適用於代理,裝飾器,工廠,適配器等,但不適用於其他模式,例如橋樑模式的實現需要一組對象(例如,哪些對象會採用橋後綴?)

17

我避免使用設計模式名稱。我認爲這屬於文件,如果任何地方。在它所做或代表的內容之後,命名裝飾器類/函數。它裝飾或橋接或鏈接或代理或重新表示的事實是沒有多大意義的。

每次你給一個字符串命名時,你會添加一個字符串後綴嗎?聽起來像hgrnNotation給我,這是我試圖避免的。

+0

`hgrnNotation` ==匈牙利符號,爲困惑。 – 2017-05-15 20:00:57

5

稱它爲它。

我有一堆裝飾器的IPrinter接口。他們呼籲:

  • PrintDisasterRecovery - 異常 處理
  • PrintQueuer - 使它成爲一個 異步調用

,這些傢伙都來自PrintDecorator繼承,所以如果有人偷窺蓋之下,他們可以看到這是怎麼回事。

11

以Java API的IO框架爲例。它廣泛使用裝飾模式,但類的名稱不反映這一點。例如,一個BufferedReader可以修飾一個FileReader,但它們是以它們的函數--Readers命名的。

如果您還將常見情況下涉及相同類的其他模式添加到名稱中,則會導致更多的問題。你最終可能會得到一個名爲MyDecoratorStrategyComponent的類。

+6

...甚至是AbstractSingletonProxyFactoryBean - http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html – blank 2013-05-07 14:23:27