![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| np9mi7 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
Добрый день.
При чтении одной, из недавно вышедших в печать, книг (C++ Coding Standards: 101 Rules, Guidelines and Best Practices (C++ In-Depth)), натулкнулся на совет:
После чего приводиться пример:
У меня возникает очевидный вопрос: А что внурти Impl? Получаю ответ из следующих строк:
После чтения всей статьи целиком у меня так и не отложилось в голове для чего нужна данная идиома? Когда её использовать? Когда её использовать не нужно? Может кто поможет в поисках ответов на данные вопросы? Заранее благодарен за ответы. |
||||||
|
|||||||
| Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Когда ты не хочешь, чтоб пользователи мог видеть внутреннюю структуру. Например при написании коммерческой либы. Или, например, когда реализация может отличаться для разных ситуаций(например для разных осей). Так ты можешь сделать
А WindowClassImpl имплементить в файлах windowclassimpl_win32.cpp и windowsclassimpl_x11.cpp. А при сборке указывать явно что нужно собирать(windowclassimpl_win32.cpp или windowsclassimpl_x11.cpp) и линковать.
Когда не хочешь, тогда и не используй. Это сообщение отредактировал(а) Mayk - 20.9.2005, 08:10 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Эта идиома один из способов уменьшить время компиляции проекта при какком-либо изменении реализации
Это сообщение отредактировал(а) Daevaorn - 20.9.2005, 08:32 |
|||
|
||||
| Orlan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 10.6.2004 Где: Киев Репутация: нет Всего: 1 |
Это фактически патерн мост, который служит для разделения интерфейса от реализации что бы первое и второе можно было менять независимо.
--------------------
А вы знали, что терапевт - это 1024 гигапевта или 1048576 мегапевтов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |