Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dependency Injection, маловато инфы в рунете 
:(
    Опции темы
Леопольд
Дата 17.8.2010, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



SABROG, не пойму, чем это лучше обычного синглтона... К тому же, если скорость критична (не просто так ведь заботишься о расходах на синхронизацию кэша ядер?), то виртуальные вызовы не лучший вариант.

Если не обойтись без downcasting'а, но dynamic_cast недопустим (в релизе), то можно использовать checked_cast... Я его выдернул из книги Александреску и Саттера "Стандарты программирования на С++"
Хотя, IMHO лучше всё же обойтись...

Это сообщение отредактировал(а) Леопольд - 17.8.2010, 10:45


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
SABROG
Дата 17.8.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(Леопольд @  17.8.2010,  10:35 Найти цитируемый пост)
то виртуальные вызовы не лучший вариант.

А разве есть какой-нибудь оверхед, если метод интерфейса чисто виртуальный?

Код

virtual void foo() = 0;



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 17.8.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(SABROG @  17.8.2010,  14:03 Найти цитируемый пост)
А разве есть какой-нибудь оверхед, если метод интерфейса чисто виртуальный?

от чистоты ничего не зависит. 
виртуальный вызов более дорогостоящ, чем _прямой_.

и еще не понял, какая связь между синглетоном и  Dependency Injection в рамках этой темы ? 
одно не альтернатива другому, а дополнение.

Это сообщение отредактировал(а) mes - 17.8.2010, 18:20


--------------------
PM MAIL WWW   Вверх
SABROG
Дата 17.8.2010, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  17.8.2010,  18:13 Найти цитируемый пост)
и еще не понял, какая связь между синглетоном и  Dependency Injection в рамках этой темы ? 
одно не альтернатива другому, а дополнение.

Разве? Разница такая вроде бы:

// Dependency Injection
Код

MyClass::MyClass(Settings* settings)
{
    OtherClass* oc = new OtherClass(settings);
    int size = settings->value("size").toInt();
}

OtherClass::OtherClass(Settings* settings)
{
    std::string str = settings->value("user").toString();
}


// Singleton

Код

MyClass::MyClass()
{
    int size = Settings::instance()->value("size").toInt();
}

OtherClass::OtherClass()
{
    std::string str = Settings::instance()->value("user").toString();
}



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.