2011-08-17 60 views
2

在C++中有一定的實現模式,我在下面描述,它在std :: iostream庫和其他類似的庫中使用。這個C++實現模式的名稱

任何人都可以記得這種模式的名稱?

該模式描述如下:
- 存在用於輸出數據或用於數據轉換(例如std :: ostream)的中央類IO。
- 對於定義了輸出轉換的每個應用程序類,「轉換器」是GLOBAL函數,而不是IO的成員函數。此模式的動機是

(1)IO的設計者都想擁有它「已完成」,不需要時加入轉換器的另一個應用程序類的任何變化,

(2),因爲你想要的IO成爲一個小型的可管理的班級,而不是一個擁有100名成員和1000名成員的班級。當需要在IO類和多個「用戶」類之間進行解耦時,這種模式很常見。

這種模式的名稱是什麼?

+1

家庭作業? :-) http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 –

+0

@Martin:我描述的這種模式從你給的鏈接中丟失。 Gamma推廣的「設計模式」列表只包含語言中立模式,這些模式嚴重依賴於多態語言。許多特定於C和C++的設計模式和實現模式,特別是那些不使用多態性的設計模式和實現模式,在鏈接(Gamma列表)中缺失。作爲另一個例子,考慮涉及模板的C++設計模式。他們不在Gamma列表中。 – Andrei

回答

2

看起來像它的草本Sutters'‘接口原理’

至少我從他的書

的接口必須是最小的一個讀它,所有的功能,不需要專用的數據(編譯或運行時速度)應該在外部函數中。

2

這根本不是設計模式。

設計模式與程序設計語言無關。你所描述的是因爲std :: ostream類來自一個庫。因此,您無法方便地添加「運營商< <(MyClass &ob)」成員函數。

合適的術語而不是設計模式是「成語」。請參閱例如:http://en.wikibooks.org/wiki/C++_Programming/Idiomshttp://en.wikibooks.org/wiki/More_C%2B%2B_Idioms(不確定您的案件是否列出,乍一看我沒有找到它)

+0

這是真的,我投了票。但是......這不是一個答案,我不確定我應該這樣做。它屬於評論。 – Omnifarious