Я видел это в чьем-то коде и думал: «Это элегантный способ решения этой конкретной проблемы, но, вероятно, он эпическим образом нарушает хорошие принципы ОО».
В конструкторе для набора классов, которые все являются производными от общего базового класса, он требует, чтобы была передана ссылка на экземплярный класс. Например,
Foo Foo_i = new (this);
Затем позже Foo будет вызывать методы в классе экземпляров для получения информации о себе и других объектах, содержащихся в классе экземпляров.
С одной стороны, это упрощает ТОНН кода, который моделирует 5-уровневую древовидную структуру аппаратного обеспечения (агенты подключаются к портам на нескольких коммутаторах и т. Д.). С другой стороны, эти объекты довольно тесно связаны друг с другом, что кажется неправильным, но я не знаю достаточно о OOA & D, чтобы понять, как это сделать.
Итак, это хорошо? Или это ОО-эквивалент оператора goto?