У меня есть следующий класс:Кто должен строить объекты в этом сценарии?
class PluginLoader
{
public:
PluginLoader(Logger&, PluginFactory&, ConflictResolver&);
//Functions.
private:
//Members and functions
};
Logger
, PluginFactory
и ConflictResolver
классы являются все интерфейсные классы, которые будут реализованы в приложении. Я создаю единственный объект PluginLoader
на верхнем уровне в основной программе. Logger
может быть известен на этом уровне. Но, PluginFactory
и ConflictResolver
используются только внутри класса PluginLoader
. Поэтому создание их объектов на верхнем уровне кажется уродливым. Что мне делать? Я могу изменить конструктор, если он понадобится, хотя я бы хотел сохранить его таким, каким он есть. Любые комментарии приветствуются. Благодарю.
Я смущен, что вы спрашиваете и что делаете. Если вам не нравится Injection Dependency (похоже, вот что вы здесь делаете, но я могу ошибаться?), Просто используйте шаблон посредника: http://en.wikipedia.org/wiki/Mediator_pattern. Я не оставлю это в качестве ответа, потому что я немного смущен. –
Можете ли вы уточнить, что вы пытаетесь сделать. Правило большого пальца: не создавайте ненужный объект, если это необходимо. и более того, работая на C++, где нет сборщика мусора, в отличие от других языков. –
@ITion Я не согласен. OO - это балансировка работы над разными объектами. Вы не должны бояться использовать больше классов! И в C++ вы не привязаны к использованию динамического распределения, и даже когда вы его используете, вы должны полагаться на интеллектуальные указатели. –