имя этого шаблона реализации C ++ - PullRequest
2 голосов
/ 17 августа 2011

Существует определенный шаблон реализации в C ++, который я опишу ниже, он используется в библиотеке std :: iostream и других подобных библиотеках.

Кто-нибудь может вспомнить название этого паттерна?

Шаблон описан так:
- Существует центральный класс IO, используемый для вывода данных или для преобразования данных (например, std :: ostream).
- для каждого класса приложения, для которого определено выходное преобразование, «преобразователями» являются ГЛОБАЛЬНЫЕ функции, а не функции-члены IO. Мотивация для этого шаблона

(1) разработчик IO хочет, чтобы он был «завершен», не требуя каких-либо изменений при добавлении другого класса приложения с конвертором, и

(2) потому что вы хотите, чтобы IO был небольшим управляемым классом, а не классом с 100 членами и тысячами строк. Этот шаблон распространен, когда требуется разделение между классом ввода-вывода и множеством пользовательских классов.

Как называется этот паттерн?

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Это вообще не шаблон проектирования.

Шаблоны проектирования не привязаны к языку программирования.То, что вы описываете, сделано, потому что класс std :: ostream происходит из библиотеки.Таким образом, вы не можете удобно добавлять функции-члены «operator << (MyClass & ob)». </p>

Правильный термин вместо шаблона дизайна - «идиома».См. Например: http://en.wikibooks.org/wiki/C++_Programming/Idioms или http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms (не уверен, что ваш случай указан в списке, на первый взгляд я его не нашел)

2 голосов
/ 18 августа 2011

похоже, что это «Принцип интерфейса» Херба Саттерса

по крайней мере, я прочитал это из одной из его книг

интерфейс должен быть минимальным, все функции, которым не нужны личные данные (для компиляции или скорости выполнения), должны быть во внешних функциях.

...