пример:
1. есть хитрый класс обрабатывающий соединение. ему для работы нужен сериализатор;
2. есть сериализатор. ему для работы нужны параметры сереализации;
3. нужно сделать игровой поток, и чатовый поток. оба потока в принципе работают можно объединить в один, но мы хотим их развивать независимо;
4. мы берём хитрое соединение, сереализатор, меняем параметры, получаем соединение;
каждого соединение существует по одному. логично! зачем нам 2 чатовых соединения? из вашей логики мы должны сделать следущие:
1. сделать синглтон-класс ChatConnection;
2. сделать сингтонр-класс GameConnection;
вроде бы всё лочгично, но зачем? ведь два класса будут отличать только парметрами серелизатора.
Цитата:
Сообщение от wvxvw
Если он мне нужен всего один, то я и буду делать всего один, зачем мне 2 одинаковых?
|
сделай один, зачем делать из него синглтон?
Цитата:
Сообщение от wvxvw
В этом и задача синглтона - намерено не дать создать другой такой же объект...
|
Ошибка! задача синглтона совсем в другом. если ты "намерянно" пытаешь создать второй такой объект, значит тебе надо! и ты ошибся проектируя класс. Задача синглтона разграничить твои права. Дело в том, что работая с синглтоном, ты не знаешь создаётся ли объект, или этот один и тот же экземпляр. логика шаблона заключается в том, что информация, об источнике появления объекта тебе не известна. но ты точно знаешь, что это ЭКЗЕМПЛЯР.
Цитата:
Сообщение от wvxvw
Конекшн уникальный по своим параметрам, и другого такого как он быть не может, потому что второму такому делать нечего будет.
|
тоесть есть внешние параметры его создания? тогда какой же это синглтон?
Цитата:
Сообщение от wvxvw
А нужен будет еще один, но с другим функционалом - так я и создам другой...
|
функционал может быть тот же самый, но "target" другой.
Цитата:
Сообщение от wvxvw
Собственно, наш спор до этого был о том, что лучше использовать:
Manager.someStaticMethod(); или Manager.getInstance().someMethod();
|
неа! это значит ты меня не внимательно читал. тут вообще никаких статиков, и никаких гетинстанс быть не должно.
Цитата:
Сообщение от wvxvw
Мое мнение такое, что если удобнее пользоваться методами объекта, у которого нужно вызвать метод (например, нам его нужно унаследовать от EventDispatcher, чтобы можно было рассылать события из него, а не через какoе-нибудь опять же статическое свойство хранящее ссылку на экземпляр EventDispatcher, то, мое мнение, что удобнее использовать синглтон. Но если класс ни от чего наследовать не нужно, то проще обойтись статическими методами.
|
тоже не соглашусь с формулировкой. сиглтон нужно использовать только тогда, когда тебе этот объект надо передавать аргументом, или тебе важна цепочка наследования. иначе лучше необходимые объекты инкапсулировать.