Ниже кода найдены в WebKit:Почему использовать один инкрементора класс
RefPtr<Element> element = pendingScript.releaseElementAndClear();
if (ScriptElement* scriptElement = toScriptElement(element.get())) {
NestingLevelIncrementer nestingLevelIncrementer(m_scriptNestingLevel);
IgnoreDestructiveWriteCountIncrementer ignoreDestructiveWriteCountIncrementer(m_document);
//Do something else...
}
}
NestingLevelIncrementer простой класс, который увеличивает счетчик в строительстве и уменьшить его в разрушении. Вы можете проверить реализацию here.
В этом ломе, я думаю, что это похоже на увеличение и сокращение числа непосредственно. Возможно, единственное преимущество заключается в том, чтобы не уменьшать число, но вводится один новый класс.
Любые другие причины использования этого шаблона?
Походит динамического связывания для меня. – leppie
Стандартизация и четкость: используйте один и тот же стиль философии/программирования во всем коде, даже если он может быть чрезмерным в некоторых местах. Это облегчает жизнь вашим коллегам-программистам. –
Использование такого класса позволяет при необходимости изменить поведение. Например, добавьте дополнительные инструкции в конструктор/деструктор для дальнейших версий. – ibi0tux