Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.12.2015, 17:44
gyfak вне форума Посмотреть профиль Отправить личное сообщение для gyfak Найти все сообщения от gyfak
  № 1  
Ответить с цитированием
gyfak

Регистрация: Aug 2013
Адрес: Москва
Сообщений: 37
По умолчанию Singleton VS static const

Недавно мне был задан вопрос о различиях шаблона
Одиночки и статической константы (или переменной).

В сети толкового ответа найти не смог.
Есть пост на хабре http://habrahabr.ru/post/103681 ,
но там говорят о статическом классе и другом языке.

Дополнительный вопрос: если объект это набор процедур и свойств,
то не проще ли создавать статичные процедуры и свойства.

Самое обидное, я понимаю что Одиночка практичнее статичных методов,
но объяснить не могу.

Буду признателен за ответы или ссылки.

Старый 22.12.2015, 19:03
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 2  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Только синглтон может реализовывать интерфейс, наследовать класс.

Сам не пользуюсь ни синглтоном, ни статическими классами.

Если нужен глобальный доступ, кладу объект в глобальную переменную.

Код AS3:
package
{
    import flash.text.TextField;
 
    public class Global
    {
        static public var textField:TextField;
    }
}

Код AS3:
package
{
    import flash.display.Sprite;
    import flash.text.TextField;
 
    public class Main extends Sprite 
    {
        public function Main() 
        {
            Global.textField = new TextField();
        }
    }
}

Старый 22.12.2015, 19:08
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 3  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
ни статическими классами
А что такое статический класс?

Код AS3:
package
{
    import flash.text.TextField;
 
    public class Global
    {
        static public var textField:TextField;
    }
}
Уж не это ли он?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 22.12.2015, 19:23
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 4  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
GBee, тогда уж можно было зацепиться за "не пользуюсь". Ладно ни один не делаешь, но неужели прям ни одним не пользуешься?

А если по делу, то это единственный мой статический класс.

Старый 22.12.2015, 19:28
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Ладно ни один не делаешь, но неужели прям ни одним не пользуешься?
Эээ? Я этого не говорил. Все утилиты - статические эээ классы :о) А синглтонов во флексе и так полно. Я на самом деле тоже эту тонкую грань между статиком и синглтоном понять не могу.

Добавлено через 2 минуты
На хабровой ссылке описаны какие то дохленькие различия на мой взгляд. А уж наследовать синглтон это я уже не понимаю вообще целей.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 22.12.2015, 19:31
gyfak вне форума Посмотреть профиль Отправить личное сообщение для gyfak Найти все сообщения от gyfak
  № 6  
Ответить с цитированием
gyfak

Регистрация: Aug 2013
Адрес: Москва
Сообщений: 37
Эм, я считал, что статических классов в as3 нет =( ну да ладно.

В том то и дилемма, одиночка нужен не для организации глобальной точки доступа, основная его задача - не дать создать больше одного экземпляра класса.

Т.е. данный шаблон расширяет собой статичный метод?

Добавлено через 2 минуты
Наследование как раз понятно - нужен тебе только один объект в игре, унаследовался от уже написанного класса и не замарачиваешься.

Старый 22.12.2015, 19:39
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 7  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
GBee, сам синглтон тоже может наследоваться от другого класса.

gyfak, статических классов в as3 нет, флешеры просто так привыкли называть классы, которые состоят только/большей частью из статических членов.

Старый 22.12.2015, 19:49
gyfak вне форума Посмотреть профиль Отправить личное сообщение для gyfak Найти все сообщения от gyfak
  № 8  
Ответить с цитированием
gyfak

Регистрация: Aug 2013
Адрес: Москва
Сообщений: 37
callme, ок, спасибо

Я так понял,
Код AS3:
public static const myClass:Sprite = new myClass();
и

Код AS3:
instance:myClass;
только тем и отличаются, что в первом случае,
мы можем в любом месте создать еще один объект myClass,
а одиночка не даст нам этого сделать.

А так, одна и та же глобальная точка доступа к объекту.

Старый 22.12.2015, 19:52
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
только тем и отличаются, что в первом случае,
мы можем в любом месте создать еще один объект myClass,
а одиночка не даст нам этого сделать.

А так, одна и та же глобальная точка доступа к объекту.
Именно.
Но в ас3 полноценных синглтонов не может быть по простой причини отсутствия возможности создания приватных конструкторов.

Старый 22.12.2015, 19:58
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 10  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Да, так и есть. А если мне понадобится чтобы объект существовал только в единственном экземпляре, то я выберу вариант с синглтоном, нежели вариант со статическим классом. Потому что статические классы сложны для понимания. Они должны выступать каркасом для построения экземпляра. А тут получается, они и сами по себе объект, а еще и каркасом выступают, но никакие экземпляры не будут создаваться на самом деле. Мне такое тяжело понять.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.