"Статик" Vs. экземпляр-"одиночка"
Друзья! В своё время спрашивал на счёт статических констант, теперь похожий вопрос возник на более высоком методическом уровне, как раз на счёт методов. Про это тоже как-то речь заходила, но давно и мельком. Так что заострю внимание.
Есть классы, которые хранят универсальные методы, не привязанные к конкретным экземплярам. Например, класс-создатель тултипов или класс, выдающий лэйблы кнопок на нужном языке по ID фразы. Поскольку работу над проектом я начинал, ваще ни фига не разбираясь, многие куски кода я заимствовал (назовём это так), очень слабо понимая нюансы их работы. По итогу подобные классы у меня оказались реализованными двумя разными способами: Первый - это "статики". Все переменные - static, Все методы - static. Тут всё просто. Для использования где бы то ни было импортируем класс и обращаемся к любому static public-у. Второй вариант - это экземпляр-"одиночка". Это не 1-в-1 навороченный GoF синглтон, но смысл тот же. Вот например мои тултипы: Код AS3:
Код AS3:
|
1)Синглтон можно экстендить
2)Ссылку на синглтон можно передать в метод |
Синглтон используется, когда нужны события от него. Класс не может посылать события.
"Типизация" класса затруднительна. Если возникнет необходимость передавать РАЗНЫЕ классы-исполнители в метод, будет непросто разобраться, что за класс передали и есть ли у него такие-то методы/свойства. Ведь все классы имеют один Тип — Class, а методы и свойства у всех разные)) |
С синглтоном идет работа через экземпляр, это объект, и все из этого вытекающее. Один объект, который можно куда-то передать, делегировать, удалить. Его удобнее инкапсулировать. Ну и да, его можно расширять.
|
Цитата:
|
Часовой пояс GMT +4, время: 13:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.