OrientDB пройти конкретный путь

Нет, и на самом деле это не ограничение. На мой взгляд, ограничение состоит в том, что friend - дробящее оружие для взлома вокруг недостатков дизайна - существует в первую очередь.

Ваш класс FooA не знает бизнеса о FooB и FooC и «который должен иметь возможность использовать его». Он должен иметь открытый интерфейс, а не заботится , кто может его использовать. Это точка интерфейса! Функции вызова в этом интерфейсе должны всегда оставлять FooA в приятном, безопасном, счастливом, согласованном состоянии.

И если вы обеспокоены тем, что вы можете случайно использовать FooA интерфейс откуда-то вы не хотели, ну просто не делайте этого; C ++ не является языком, подходящим для защиты от подобных ошибок пользователя. В этом случае ваше тестовое покрытие должно быть достаточным.

Строго говоря, я уверен, что вы сможете получить функциональность, с которой вы столкнулись, с каким-то ужасным сложным «шаблоном дизайна», но, честно говоря, я бы не стал беспокоиться.

Если это проблема для семантики дизайна вашей программы, я вежливо рекомендую, чтобы ваш дизайн имел недостаток.

1
задан Stanislav Kralin 18 January 2019 в 09:19
поделиться