Вопрос доступа к классу - PullRequest
       13

Вопрос доступа к классу

1 голос
/ 21 января 2009

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

Я использую шаблон синглтона, чтобы помочь с журналированием. Однако ведение журнала происходит только в одном классе, а синглтон в основном является наблюдателем логического значения, которое открывает и закрывает файл журнала. Поскольку я не хочу, чтобы файл открывался более одного раза или закрывался более одного раза, я использую шаблон синглтона. Однако я не хочу, чтобы это было глобальное значение, и я уверен, что, черт возьми, не хочу, чтобы другие классы, даже внутри пакета, обращались к нему. Как я могу сделать так, чтобы только этот один класс использовал это?

Ответы [ 4 ]

3 голосов
/ 21 января 2009

Сделайте его закрытым классом внутри класса, в котором вы хотите его использовать. Также рассмотрите возможность сделать его статическим классом.

2 голосов
/ 21 января 2009

Если вы не хотите, чтобы к нему обращались другие классы, почему он в первую очередь синглтон? Просто сделайте его закрытым экземпляром класса и сохраните ссылку на него.

0 голосов
/ 21 января 2009

Еще одно левое поле - решение может заключаться в принятии шаблона состояния в регистраторе. Когда установлен флаг ведения журнала, реализация переходит на тот, который открывает файл и регистрирует его. Когда он сбрасывается, то реализация переходит на тот, который закрывает файл и не регистрируется. Установка и переустановка - это уже не логический флаг, а метод, который выполняет изменение состояния.

0 голосов
/ 21 января 2009

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

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