C ++中有一些实现模式,我在下面描述,它用于std :: iostream库和其他类似的库。
有人能回忆起这种模式的名称吗?
模式描述如下:
- 存在用于输出数据或转换数据的中央类IO(例如,std :: ostream)
- 对于定义了输出转换的每个应用程序类,“转换器”是GLOBAL函数,而不是IO的成员函数。这种模式的动机是
(1)IO的设计者想要“完成”,当添加另一个带转换器的应用程序类时不需要进行任何更改,并且
(2)因为你希望IO是一个小的可管理类,而不是一个有100个成员和1000行的类。当IO类和大量“用户”类之间需要解耦时,这种模式很常见。
这种模式的名称是什么?
答案 0 :(得分:2)
看起来像Herb Sutters的“接口原理”
至少我是从他的一本书中读到的
接口必须是最小的,所有不需要私有数据(用于编译或运行时速度)的函数应该在外部函数中。
答案 1 :(得分:2)
这根本不是设计模式。
设计模式与程序语言无关。您所描述的内容已完成,因为类std :: ostream来自库。所以你不能方便地添加“operator<<(MyClass& ob)”成员函数。
正确的术语而不是设计模式是“成语”。例如:http://en.wikibooks.org/wiki/C++_Programming/Idioms或http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms(不确定您的案例是否列出,乍看之下我没有找到它)