Иногда я строю дерево виртуальных машин. Например: я создаю виртуальную машину PersonHobbies, добавляя виртуальную машину Person и Hobbies к виртуальной машине PersonHobbies. Этот класс будет иметь все команды, которые охватывают обе другие виртуальные машины.
Я не решаюсь связать виртуальную машину Hobbies с виртуальной машиной Person (или наоборот), потому что будет сложнее использовать виртуальную машину Hobbies без виртуальной машины Person (или наоборот).
Аналогичным образом я создаю представления: в этом примере я могу создать представления как для Person, так и для хобби и использовать эти представления при создании представления PersonHobbies.