|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2006
Сообщений: 256
|
Цитата:
__________________
:emocry: |
|
|||||
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
Цитата:
|
|
|||||
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Цитата:
var boo:ClassA = new ClassA(true); trace("is it singleton? -"+foo == boo); Во многих случаях можно спорить о том что нравится/не нравится. Это называется холивар. Холивар обычно заканчивается, если кто-то способен доказать свою точку зрения примером. Например, как тот, что я написал.
__________________
http://realaxy.com |
|
|||||
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
да я согласен что при тру.. кривость есть.. но зачем писать в данном контексте тру разработчику.. ну вообще то можно конечно ссылатся на того кто вызывает.. если не сам класс.. то ошибка.
Ясн... Iv спасибо. |
|
|||||
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
Холивар - это обычно что-то vs что-то. А Синглтон - он против кого?
В смысле, кто у него прямые конкуренты? Вот если хочется чего-то глобааального такого, то выбор не велик: или синглтон, или статические методы или методы пекеджа (что по сути те же статические методы). Статические методы имеют свои минусы. Совсем отказаться от глобального доступа - тоже не всегда хорошо. |
|
|||||
стервочка (я мужик)
|
Холивар - это когда писками меряются. например я это уже 1й зачаток холивара в данном топе. может хоть один разовьём? а скучно.
|
|
|||||
Почитав книжку Foe, Object-Oriented Actionscript 3.0 (2007) долгое время использовал их версию синглтона
package { public class Singleton { private static var instance:Singleton; private static var allowInstance:Boolean; public function Singleton() { if(!allowInstance) { throw new Error("Error: use Singleton.getInstance() instead of new keyword"); } } public static function getInstance(fg):Singleton { if(instance == null) { allowInstance = true; instance = new Singleton(); trace("Singleton instance created"); allowInstance = false; } else { trace("Singleton instance already exists"); } return instance; } public function doSomething():void { trace("doing something"); } } } В каких конкретных случаях из практики использование этого паттерна необходимо? И какие причины против его использования?
__________________
Сам себе репортер |
|
|||||
"необходимость" в программировании возникает вообще крайне редко... одну и ту же задачу можно решить множеством способов. Другое дело удобство, расширяемость, сопровождение, инкапсуляция, повторное использование кода и т.д. и т.п....
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
Ну взять, скажем, опции: громкость музыки и эффектов, режим оконный/полноэкранный, качество высокое/низкое, режим паузы, режим mute и так далее.
Частенько нужны из самых разных и отдалённых концов приложения. Самый простой способ - сделать нечто с глобальным доступом. Одиночка тут вполне годиться. |
|
|||||
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
terbooter, вообще, синглтон сейчас многие относят к антипаттернам. И, наверное, это правильно.
Я думаю, что правильно его относить к антипаттернам, но не правильно совершенно от него отказываться. Так сложилось исторически. Это как использование _root в AS1-2. Синглетон объявили паттерном (т.е. рекомендуемым к применению шаблоном), но его используют в целях, для которых он совершенно не предусмотрен. Реальное назначение синглетона - предоставлять доступ к единственному экземпляру класса и не допускать возможность создания второго. Как правило, ошибочное использование синглетона - организация глобального доступа к объекту. Так вот, синглетон используют для организации глобального доступа раз в 100 чаще, чем в целях, которым он должен служить. Объявляя синглетон антипаттерном можно добиться того, что люди будут куда внимательнее относиться к его использованию.
__________________
http://realaxy.com |
Часовой пояс GMT +4, время: 18:11. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|