Добрый день!
Есть такой интерфейс:
public static interface Invokable {
public void invoke();
};
и объект, который его реализует.
Каким образом можно добится того, чтобы этот метод можно было вызвать только из определенного места, а в других местах - нельзя(например, вылетало бы исключение)...?
Объясню зачем это нужно:
Есть модель, реализующая этот метод. Есть объект - сервер, который его будет вызывать.. Необходимо сделать так, чтобы пользователь не мог сам вызвать метод, а сервер - мог.
То есть, чтобы нельзя было написать model.invoke() и метод бы выполнился..
Подходит любая реализация задуманного.
Схема работы такая:
-сервер получает запрос и собирает Context, в котором инфа на пользователя и о подключении.
-объект контекста должен обязательно быть передан модели
-сервер вызывает invoke на определенной модели
Вопрос в том, как сделать так, чтобы пользователь не смог сам вызывать invoke!
Я думал сделать следующее:
класс ContextHolder с методами setCtx, getCtx.. Далее сервер вызывает Holder::setCtx, Model::invoke, а модель получает контект getCtx.... НО! Ведь пользователь тоже сможет вызвать setCtx.......... и все равно обойдет это.
*Объявлять метод как private, а потом при помощи рефлексии менять уровень доступа-не предлагать))