Это также вопрос, который я задал в комментарии в одном из сообщений Miško Hevery google, который касался инъекции зависимостей, но он был похоронен в комментариях.
Интересно, как может работать factory/builder шаг проводки зависимостей вместе на С++.
т.е. мы имеем класс A, который зависит от B. Строитель будет выделять B в кучу, передать указатель на B в конструкторе A, а также выделить в куче и вернуть указатель на A.
Кто после этого очищается? Хорошо ли позволить строителю очистить его после его завершения? Кажется, это правильный метод, поскольку в разговоре говорится, что строитель должен установить объекты, которые, как ожидается, будут иметь одинаковое время жизни или, по крайней мере, более длительный срок службы (у меня также есть вопрос). Что я имею в виду в коде:
class builder {
public:
builder() :
m_ClassA(NULL),m_ClassB(NULL) {
}
~builder() {
if (m_ClassB) {
delete m_ClassB;
}
if (m_ClassA) {
delete m_ClassA;
}
}
ClassA *build() {
m_ClassB = new class B;
m_ClassA = new class A(m_ClassB);
return m_ClassA;
}
};
Теперь, если есть зависимость, которая, как ожидается, продлится дольше, чем время жизни объекта, мы вставляем ее (например, ClassC - это зависимость). Я понимаю, что мы должны изменить метод сборки на что-то вроде:
ClassA *builder::build(ClassC *classC) {
m_ClassB = new class B;
m_ClassA = new class A(m_ClassB, classC);
return m_ClassA;
}
Каков ваш предпочтительный подход?