Композиция на практике - PullRequest
0 голосов
/ 26 октября 2018

В университете нас учат, что композиция очень важна для поддержания чистоты и эффективности вашего кода.Например, объект класса игрового объекта может только существовать в объекте класса игрового поля.Если нет игрового поля, не может быть игрового поля.Однако нас никогда не учили , как реализовать такую ​​вещь.Когда я спросил, я получил ответ, похожий на «Добавить проверку в конструкторе».или что-то в этом роде, но я понятия не имею, как бы это реализовать (я не знаю, что искать или каковы официальные термины).Одной из моих попыток было наследование.Преподавателям это не понравилось, давайте держать это в том же духе ...

Итак, как работает композиция на практике?Как я могу сделать так, чтобы класс игрового поля был only class, который мог бы создавать экземпляр игры без наследования?

1 Ответ

0 голосов
/ 26 октября 2018

На практике класс, который ссылается на другой, не накладывает ограничений на класс, на который он ссылается.Класс не должен заботиться о том, что на него ссылается.Например: вы не захотите применять это ограничение при написании модульных тестов.Я бы никогда не сделал так, чтобы класс игрового поля был единственным классом, который мог бы создать экземпляр игры.

Для конкретного примера того, как композиция реализована в дикой природе, посмотрите движок игры Unity3d: https://www.youtube.com/watch?v=8TIkManpEu4

...