Как я могу скрыть важные методы, такие как Update (), но раскрыть необходимые детали? - PullRequest
0 голосов
/ 13 июня 2011

Я работаю над своей игровой платформой, и, ради аргумента, у меня есть TimeService, который отвечает за вычисление времени кадра / дельты и общего времени, в течение которого приложение работало.TimeService происходит от Service, которая имеет метод Update ().Каков наилучший способ раскрытия данных TimeService, таких как DeltaTime и TotalTime, но скрыть метод Update (), чтобы убедиться, что ничто с помощью DeltaTime или TotalTime не может случайно вызвать Update () и сбросить все тайминги?ServiceManager вызывает метод Update () один раз за кадр, поэтому он и подвергается.

Идеи?

Ответы [ 3 ]

2 голосов
/ 13 июня 2011

Чистый способ сделать это - использовать рисунок фасада .Определите класс, который объявляет только те методы, которые вы хотите предоставить (DeltaTime, TotalTime и т. Д.).Реализуйте его для передачи этих вызовов (скрытому) объекту TimeService, с которым он связан.

2 голосов
/ 13 июня 2011

Я бы использовал интерфейсы. По сути, у вас есть одно для вещей, которые должны знать время, и другое для вещей, которые должны контролировать время.

1 голос
/ 13 июня 2011

Я согласен с @stonemetal об интерфейсах. Например, в C # вы можете явно реализовать интерфейсы, чтобы методы интерфейса были видны только через ссылку на интерфейс.

Другой вариант - уменьшить видимость метода Update (сделать его внутренним, другом и т. Д.) С помощью модификаторов доступа.

Многое зависит от вашего языка программирования; трудно дать независимый от языка ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...